我将numpy用于存储在我模块中的自定义函数。包numpy是否会自动导入到我调用模块的文件中?我可以将包numpy仅用于我的模块中定义的函数,而不是调用我的模块的文件吗?
答案 0 :(得分:0)
当您在模块中调用import numpy
时,是的,它仅在您的模块中可用,而不是从您导入的任何模块中获取。但是,没有什么能阻止外部模块导入numpy本身,因为它必须安装在系统上才能自行导入。
<强> ETA:强>
演示:
在inner.py
:
import numpy as np
print ("Inner: ", np.__version__)
在outer.py
:
import inner
print ("Outer: ", np.__version__)
输出:
$ python outer.py
('Inner: ', '1.9.2')
Traceback (most recent call last):
File "outer.py", line 3, in <module>
print ("Outer: ", np.__version__)
NameError: name 'np' is not defined
<强> ETA:强>
如果您使用通配符(from inner import *
)导入模块,则可能会发生这种情况。 PEP8 discourages this:
应避免使用通配符导入(
from <module> import *
),因为它们不清楚命名空间中存在哪些名称,这会使读者和许多自动化工具混淆。通配符导入有一个可防御的用例,即将内部接口重新发布为公共API的一部分(例如,使用可选加速器模块中的定义覆盖接口的纯Python实现,以及确切的定义将是被覆盖的事先不知道。