2015-10-17 29 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文件相同的文件夾中,而不是放在單獨的文件夾中。