我讀了一些代碼,其中包含以下import語句:語法從一個模塊中導入多個類
from threading import local as thread_local, Event, Thread
起初,這句法困擾了我,但我認爲這等同於:
from threading import local as thread_local
from threading import Event
from threading import Thread
任何人都可以確認是否是這種情況?
我讀了一些代碼,其中包含以下import語句:語法從一個模塊中導入多個類
from threading import local as thread_local, Event, Thread
起初,這句法困擾了我,但我認爲這等同於:
from threading import local as thread_local
from threading import Event
from threading import Thread
任何人都可以確認是否是這種情況?
您可以在官方文檔中查看。這裏的documentation for the import
syntax:
import_stmt ::= "import" module ["as" name] ("," module ["as" name])* | "from" relative_module "import" identifier ["as" name] ("," identifier ["as" name])* | "from" relative_module "import" "(" identifier ["as" name] ("," identifier ["as" name])* [","] ")" | "from" module "import" "*" module ::= (identifier ".")* identifier relative_module ::= "."* module | "."+ name ::= identifier
注意你怎麼總是有import module ["as" name]
和identifier ["as" name]
,包括在列表定義:
("," identifier ["as" name])*
這意味着一個逗號,
後跟標識符,可選分配as
爲一個名字,)*
表示「這個組可以重複零次或多次,其中包括您提供的示例。」
這是在同一頁上還解釋了一下後上:
的
from
形式使用一個稍微複雜的過程:
- 發現在
from
條款,加載指定的模塊必要時初始化;- 每個在進口子句指定的標識符:
- 檢查,如果導入的模塊有這個名字的屬性
- 如果沒有,嘗試導入一個子模塊具有該名稱,然後檢查導入的模塊再次針對該屬性
- 如果未找到該屬性,則會引發
ImportError
。- 否則,爲該值的引用存儲在本地名稱空間中,
as
子句中使用的名稱,如果它存在,否則 使用屬性名稱
是,它是。
檢查出所有的,人們可以在Python導入模塊的方式: https://docs.python.org/2/reference/simple_stmts.html#the-import-statement
是。否則,如何在導入中定義多個別名? '從本地線程導入t_local,事件爲Harambe,線程爲Banana'。 – Bakuriu
是的,我很積極!我認爲整個Python社區也將是積極的! –