2012-06-17 50 views
0

我已經寫了奇怪的方便的功能,而我一直在做python。 (列表上的幾個方法,幾個更有用的輸入功能等)自動導入或使用自定義函數的其他無代碼方式

我想要的是能夠從python文件訪問這些函數,而不必通過import my_module導入模塊。

我以爲它會發生自動導入模塊,或者把這些功能在其他默認Python模塊,但我不介意它是如何做的方式。

任何人都可以闡明我應該如何做到這一點?

(我知道import my_module還不是很多,但是你可以用

sys.path.append("c:\fake\path") 
from my_module import * 

最終這是越來越長......)

+7

不要,因爲顯式比隱式更好! –

+0

是的,但它很討厭... – ACarter

+0

如果你使用'iPython',你可以設置它自動導入東西。 –

回答

4

蟒蛇每當運行Python解釋器模塊site自動導入。該模塊嘗試導入另一個名爲sitecustomize的文件。你可以把你的功能在裏面,將它們添加到__builtins__ mapping有:

for func in [foo, bar, baz]: 
    __builtins__[func.__name__] = func 

注意,在CPython的,其中__builtins__是可變的字典裏,才能工作。這樣做會自動使這些函數可用於此安裝的所有Python代碼。

強烈會阻止你這樣做!隱式永遠不會比明確的更好,任何維護你的代碼的人都會想知道它們來自哪裏。

你會用from myglobalutils import *進口在你的模塊更好。

1

import this(它說了很多幾行) 。您可以import已經導入了其他的人,例如模塊:

import my.main # where main.py contains `import X, Y, Z` 

# X, Y, and Z access: 
my.main.X 
my.main.Y 
my.main.Z 
+0

我明白你說的關於從模塊中導入模塊的意思,但是你是什麼意思?'import this'? – ACarter

+0

@Aarter:打開python解釋器提示符並嘗試它。 –

+0

哇,我沒有想到! – ACarter

相關問題