當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python import__用法及代碼示例


用法:

__import__(name, globals=None, locals=None, fromlist=(), level=0)

注意

importlib.import_module() 不同,這是日常 Python 編程中不需要的高級函數。

該函數由import陳述。它可以被替換(通過導入builtins模塊並分配給builtins.__import__) 為了改變語義import聲明,但這樣做是強烈不鼓勵,因為使用導入鉤子通常更簡單(請參閱PEP 302) 來實現相同的目標,並且不會導致假定默認導入實現正在使用的代碼出現問題。直接使用import__也不鼓勵讚成importlib.import_module().

該函數導入模塊 name ,可能使用給定的 globalslocals 來確定如何解釋包上下文中的名稱。 fromlist 給出了應該從 name 給出的模塊導入的對象或子模塊的名稱。標準實現根本不使用其locals 參數,而僅使用其globals 來確定import 語句的包上下文。

level指定是使用絕對導入還是相對導入。0(默認)意味著隻執行絕對導入。正值level表示相對於調用模塊的目錄要搜索的父目錄的數量import__(參考PEP 328詳情)。

name 變量的形式為 package.module 時,通常會返回頂級包(直到第一個點的名稱), notname 命名的模塊。但是,當給定一個非空的fromlist 參數時,將返回以name 命名的模塊。

例如,語句 import spam 生成的字節碼類似於以下代碼:

spam = __import__('spam', globals(), locals(), [], 0)

語句 import spam.ham 導致此調用:

spam = __import__('spam.ham', globals(), locals(), [], 0)

請注意 __import__() 如何在此處返回頂級模塊,因為這是由 import 語句綁定到名稱的對象。

另一方麵,語句from spam.ham import eggs, sausage as saus 導致

_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)
eggs = _temp.eggs
saus = _temp.sausage

在這裏,spam.ham 模塊是從 __import__() 返回的。從此對象中檢索要導入的名稱並將其分配給它們各自的名稱。

如果您隻想按名稱導入模塊(可能在包中),請使用 importlib.import_module()

在 3.3 版中更改:負值level不再支持(這也將默認值更改為 0)。

在 3.9 版中更改:當命令行選項-E或者-I正在使用,環境變量PYTHONCASEOK現在被忽略了。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 import__。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。