用法:
__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__。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。