使用 import
语句时, 只导入包和模块, 而不单独导入函数或者类。 functionality)被执行, 这是一种副作用.
定义:
用于方便模块间共享代码的重用机制.
优点:
命名空间的管理规范十分简单. 每个标识符的来源都用一致的方式来表示. x.Obj
表示 Obj
对象定义在模块 x
中.
缺点:
模块名可能有命名冲突. 有些模块名的长度过长以至于不方便.
结论:
用 import x
来导入包和模块.用 from x import y
, 其中x是包前缀, y是不带前缀的模块名.在以下情况使用 from x import y as z
: 如果有两个模块都叫 y
; 如果 y
和当前模块的某个全局名称冲突; 如果 y
是长度过长的名称.仅当缩写 z
是标准缩写时才能使用 import y as z
.(比如 np
代表 numpy
.)例如, 可以用如下方式导入模块 sound.effects.echo
:from sound.effects import echo ... echo.EchoFilter(input, output, delay=0.7, atten=4)
导入时禁止使用相对包名. 即使模块在同一个包中, 也要使用完整包名. 这能避免无意间重复导入同一个包.
例外:
这一规定的例外是:
typing
模块collections.abc
模块typing_extensions
模块