我正在运行 Python 3.6.2 并尝试根据需要将其他文件导入我的 shell 提示符。我在 my_file.py 中有以下代码。
import numpy as np
def my_file(x):
s = 1/(1+np.exp(-x))
return s
从我的 3.6.2 shell 提示我调用
from my_file import my_file
但是在我的 shell 提示符下,如果我想使用库 numpy,我仍然必须将 numpy 导入 shell 提示符,即使我已经导入了一个导入 numpy 的文件。这是设计使然的功能吗?或者有没有办法导入 numpy 一次?
最佳答案
import
具有三个完全独立的效果:
- 如果模块还没有在当前进程中导入(通过任何脚本或模块),执行它的代码(通常是从磁盘)并存储一个模块对象,其中包含生成的类、函数、和变量。
- 如果模块在包中,(首先导入包,然后)将新模块作为属性存储在包含的包中(以便像
scipy.special
这样的引用起作用)。< - 将最终导入的模块分配给调用范围内的变量。 (
import foo.bar
分配给foo
;import baz.quux as frob
分配给baz.quux
给名称frob
。)
前两个效果在所有客户端之间共享,而最后一个则完全是本地的。这是设计使然,因为它避免了在不确定是否可用的情况下意外使用导入模块的依赖项(如果其他模块更改了它们导入的内容,稍后会中断)。它还允许不同的客户端使用不同的速记。
作为hpaul noted ,您可以使用另一个模块的具有限定名称的导入,但这是在滥用模块的接口(interface),就像任何其他使用私有(private)名称一样,除非(例如 six.moves
或 os.path
哪个实际上根本不是一个模块)该模块打算为其他模块发布名称。
关于python - 导入 Python 文件是否也会将导入的文件导入 shell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52250013/