如果你有一個像module
一個模塊,可以繞過它,並利用現有的功能內不使用模塊?有沒有辦法繞過Python中的命名空間/模塊名稱?
我導入的模塊,但是編譯器還是會抱怨沒有找到function
。我仍然必須使用module.function()
。
它有更多的功能,所以我不希望由一個重新定義他們一個只是儘可能避免打字module
。
如果你有一個像module
一個模塊,可以繞過它,並利用現有的功能內不使用模塊?有沒有辦法繞過Python中的命名空間/模塊名稱?
我導入的模塊,但是編譯器還是會抱怨沒有找到function
。我仍然必須使用module.function()
。
它有更多的功能,所以我不希望由一個重新定義他們一個只是儘可能避免打字module
。
在Python導入只是增加了東西到您的命名空間。您如何限定導入的名稱是import foo
和from foo import bar
之間的差異。
在第一種情況下,你只會導入的模塊名foo
,這就是你將如何在它達到什麼,這就是爲什麼你需要做foo.bar()
。第二種情況,你明確地只導入bar
,現在你可以這樣調用它:bar()
。
from foo import *
將導入所有的可導入名稱(在那些特殊的變量定義__all__
)到當前的命名空間。這雖然有效 - 不推薦使用,因爲您最終可能會意外覆蓋現有名稱。
foo = 42
from bar import * # bar contains a `foo`
print foo # whatever is from `bar`
最好的做法是導入任何你需要:
from foo import a,b,c,d,e,f,g
或者你可以別名名稱
import foo as imported_foo
底線 - 儘量避免from foo import *
。
你知道'從模塊導入*'嗎? – isedev 2013-03-17 14:13:37
謝謝我認爲這是隱式完成的功能。現在它可以工作。有沒有辦法限制導入到所有功能?因爲它也有其他類型,只是想知道。 – 2013-03-17 14:15:27
在你的'module'中,你可以定義一個名爲'__all__'的變量,它包含了所有將被'*'導入的名字。 – 2013-03-17 14:17:41