Python 在模块中使用import的“最佳实践”是什么
导入语句就像Python中的任何其他语句或关键字一样,应该遵循最佳实践并正确添加到代码中。让我们依次看看它们。
多个导入
多个导入通常应该分别放在不同的行上。例如:
import numpy
import pandas
import matplotlib
始终置顶
引入语句始终放置在文件的顶部,即:
- 在模块注释和文档字符串之后
- 在模块全局变量和常量之前
例如:
# import the numpy module
import numpy
按顺序导入模块
一个好的做法是按照以下顺序导入模块:
- 标准库模块 – 例如 sys、os、getopt、re
- 第三方库模块 – 例如 ZODB、PIL.Image 等等
- 自行开发的模块
绝对导入
推荐使用绝对导入,因为它们通常更易读,并且如果导入系统配置不正确,它们往往具有更好的性能。例如:
import mypkg.sibling
from mypkg import sibling
from mypkg.sibling import example
通配符导入(from <module> import *
)应该避免使用
避免使用通配符导入,因为它们使得在命名空间中存在哪些名称变得不清楚,会给读者和许多自动化工具带来困惑。
循环导入
为了避免循环导入的问题,有时需要将导入移到函数或类中。Gordon McMillan说:
“双方模块使用 import <module>
形式的导入时,循环导入是可以的。但是当第二个模块想要从第一个模块中抓取一个名称(’from module import name’)并且导入放在顶层时,会导致失败。这是因为第一个模块正在忙于导入第二个模块,所以第一个模块中的名称尚不可用。”
如果第二个模块只在一个函数中使用,导入可以轻松地移动到该函数中。在调用导入时,第一个模块已经完成初始化,第二个模块就可以进行导入。
如果某些模块是特定于平台的,可能还需要将导入移到代码的顶层之外。在这种情况下,甚至可能无法在文件开头导入所有模块。在相应的特定于平台的代码中导入确切的模块是一个不错的选择。