我读了一些代码,其中包含以下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社区也将是积极的! –