【发布时间】:2017-05-13 23:29:20
【问题描述】:
我正在开发一个使用不同脚本的 Python 项目。这里的问题是我不知道如何将一个模块导入到我已经导入的几个脚本中。例如:
#main.py
import os
import script1
import script2
如何将 os 模块导入所有其他脚本,这样我就不必在 script1.py 和 script2.py 上再次导入 os
我是 Python 新手,谢谢
【问题讨论】:
我正在开发一个使用不同脚本的 Python 项目。这里的问题是我不知道如何将一个模块导入到我已经导入的几个脚本中。例如:
#main.py
import os
import script1
import script2
如何将 os 模块导入所有其他脚本,这样我就不必在 script1.py 和 script2.py 上再次导入 os
我是 Python 新手,谢谢
【问题讨论】:
这确实不是一个好主意,因为它会使跟踪哪个模块(文件)需要哪个导入变得非常困难。但是,如果您必须这样做,则可以将文件中的 import 语句数量减少到如下所示:
创建一个文件(例如,imports.py)并将所有导入文件放入其中:
import os
import script1
import script2
# etc
然后,对于每个文件,您不需要复制所有导入,只需编写以下代码:
from imports import *
..您将能够从该文件中使用它们。
值得注意的是,这样做实际上并不会比消除您在每个文件顶部编写导入的需要更多。 Python 已经确保,在执行代码期间,每个模块仅导入一次,无论您在代码中包含该语句多少次。
根据documentation,关于导入过程:
import 语句结合了两个操作;它搜索命名模块,然后将该搜索的结果绑定到本地范围内的名称。 [...] 在导入搜索期间检查的第一个位置是 sys.modules。此映射用作先前已导入的所有模块的缓存,包括中间路径。 [...] 在导入期间,模块名称在 sys.modules 中查找,如果存在,关联的值是满足导入的模块,过程完成。
【讨论】: