导入

使用 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)导入时禁止使用相对包名. 即使模块在同一个包中, 也要使用完整包名. 这能避免无意间重复导入同一个包.

例外:

这一规定的例外是:

  1. 以下用于静态分析和类型检查的模块:
    1. typing 模块
    2. collections.abc 模块
    3. typing_extensions 模块
  2. six.moves 模块中的重定向.