我正在阅读一些包含以下导入语句的代码:
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 syntax https://docs.python.org/3/reference/simple_stmts.html#import:
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]
and identifier ["as" name]
,包括在列表定义中:
( "," identifier ["as" name] )*
这意味着一个逗号,
后跟一个标识符,可以选择分配as
到一个名字和)*
意味着“该组可以重复零次或多次,其中包括您提供的示例。
稍后在同一页面上也对此进行了解释:
The from
form 使用稍微复杂的过程:
- 找到指定的模块
from
子句,必要时加载并初始化它;
- for each of the identifiers specified in the import clauses:
- 检查导入的模块是否具有该名称的属性
- 如果没有,请尝试导入具有该名称的子模块,然后再次检查导入的模块的该属性
- 如果没有找到该属性,
ImportError
被提出。
- 否则,对该值的引用存储在本地命名空间中,使用
as
子句(如果存在),否则
使用属性名称
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)