2015-10-17 91 views
-2

我知道这个问题以前已经被问到过,但我不能对答案的意思做出正面或反面。从MATLAB到Python的过渡

我正在从MATLAB过渡到Python。在MATLAB中,我可以编写自己的函数并在我的代码中使用它们。我知道我可以在Python中做同样的事情。但我很难找出如何去做。

我想做的事情就是创建一个具有多个函数定义的文件,然后像其他任何模块一样将其导入到Python中。

首先,这是对它的思考方式吗?或者我只需要为每个功能创建多个定义文件?

其次,如果是正确的思考方式,我该如何访问该文件?我知道你必须设置PYTHONPATH。我看过它,它看起来对我来说没有意义。

作为示例:我创建了一个名为User的文件夹。其中我有一个名为ted.py的python函数。我把所说的文件放在其他库文件所在的位置(如numpy或scipy)。我想导入名为User的文件。我怎样才能做到这一点?

+0

是的,你是正确的。每个'py'文件都可以作为模块导入。只需从文件名“import functionName”中写入,就完成了。 –

+0

你也可以'import sys; sys.path.append('dirname')'将'dirname'添加到你的python路径以便导入。 –

+0

这些都不起作用。不管我做什么,都会告诉我目录不存在。 – Jay

回答

0

您有一个类似非matlab的(matlab-different?dis-matlab-like?)选项,可以将多个函数定义放入同一个.py文件中。一旦文件 - 比如,fundefs.py - 是你的路径上,可能通过发行具有import sys; sys.path.append('path/to/fundefs');,可将其导入

  1. 通过import fundefs,之后就可以通过其中的fundefs.fun1,访问功能fundefs.fun2
  2. from fundefs import *,它将把所有的函数放到你当前的命名空间中。对于较大的模块,这通常是令人沮丧的(因为它会污染你的命名空间),但对于你自己的一些功能,这可能就是你所追求的。另见this very informative answer(以及其中的评论)。
  3. 作为一个中间地带通过import very_long_and_descriptive_module_name as shorthand访问您的功能shorthand.fun1shorthand.fun2等(在明显的情况下,如果你的定义是在文件中very_long_and_descriptive_module_name.py
0

不会导入用户。你想要的是import ted。通常,您可以将ted.py放在与主python文件相同的文件夹中,而不是放在单独的文件夹中。