用法:
__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,可能使用給定的globals和locals來確定如何解釋包上下文中的名稱。fromlist給出了應該從name給出的模塊導入的對象或子模塊的名稱。標準實現根本不使用其locals參數,而僅使用其globals來確定import語句的包上下文。level指定是使用絕對導入還是相對導入。0(默認)意味著隻執行絕對導入。正值level表示相對於調用模塊的目錄要搜索的父目錄的數量import__(參考PEP 328詳情)。當
name變量的形式為package.module時,通常會返回頂級包(直到第一個點的名稱),not以name命名的模塊。但是,當給定一個非空的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 importlib.reload用法及代碼示例
- Python importlib.util.LazyLoader.factory用法及代碼示例
- Python imp.reload用法及代碼示例
- Python OpenCV imdecode()用法及代碼示例
- Python imaplib.IMAP4.search用法及代碼示例
- Python image轉binary用法及代碼示例
- Python imaplib.IMAP4用法及代碼示例
- Python imaplib.IMAP4.store用法及代碼示例
- Python itertools.takewhile用法及代碼示例
- Python string isalnum()用法及代碼示例
- Python id()用法及代碼示例
- Python ipaddress.collapse_addresses用法及代碼示例
- Python ipaddress.IPv4Address.reverse_pointer用法及代碼示例
- Python io.text_encoding用法及代碼示例
- Python string isidentifier()用法及代碼示例
- Python numpy irr用法及代碼示例
- Python ipaddress.IPv4Address.__format__用法及代碼示例
- Python calendar isleap()用法及代碼示例
- Python itertools.compress用法及代碼示例
- Python math isclose()用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 import__。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
