我有一个utils.py
文件,我在其中存储了我在主代码中使用的大部分功能。为了安全起见,我在主代码和utils.py
中导入了许多常用库,如numpy,pandas等。
然而,在今天清理我的代码时,我想知道这是否是导入库的最佳方式。我意识到Python不会重新加载已经加载的模块(除非明确询问reload numpy as np
)。但是如果import numpy as np
中的utils.py
,我是否需要在主代码文件中再次导入这些库?我认为如果我在主代码中导入库,那么它们的命名空间应该是全局可用的,因此我不必再在utils.py
中导入它们。这是对的吗?
答案 0 :(得分:0)
这不正确。
导入的模块将看不到导入器的命名空间。 它的全局namspace将是它自己文件的全局变量。
虽然导入程序可以通过限定来查看导入的命名空间 使用模块名称,反过来将不起作用。
假设您有module1.py
和utils.py
module1.py:
import sys
import utils
utils.print_args()
utils.py:
# import sys
def print_args():
print(sys.argv)
运行module1.py
而不取消注释import sys
中的utils.py
将会提供
NameError: name 'sys' is not defined
取消注释后,你得到
['module1.py']