python - 导入 Python 文件是否也会将导入的文件导入 shell?

标签 python python-3.x numpy

我正在运行 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具有三个完全独立的效果:

  1. 如果模块还没有在当前进程中导入(通过任何脚本或模块),执行它的代码(通常是从磁盘)并存储一个模块对象,其中包含生成的类、函数、和变量。
  2. 如果模块在包中,(首先导入包,然后)将新模块作为属性存储在包含的包中(以便像 scipy.special 这样的引用起作用)。<
  3. 将最终导入的模块分配给调用范围内的变量。 ( import foo.bar 分配给 fooimport baz.quux as frob 分配给 baz.quux 给名称 frob。)

前两个效果在所有客户端之间共享,而最后一个则完全是本地的。这是设计使然,因为它避免了在不确定是否可用的情况下意外使用导入模块的依赖项(如果其他模块更改了它们导入的内容,稍后会中断)。它还允许不同的客户端使用不同的速记。

作为hpaul noted ,您可以使用另一个模块的具有限定名称的导入,但这是在滥用模块的接口(interface),就像任何其他使用私有(private)名称一样,除非(例如 six.movesos.path 哪个实际上根本不是一个模块)该模块打算为其他模块发布名称。

关于python - 导入 Python 文件是否也会将导入的文件导入 shell?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52250013/

相关文章:

python - 如何检索使用 minidom 创建的 xml?

python - 使用 python 从发件人电子邮件地址在 Outlook 中创建规则

python - python asyncio 协程可以有不带等待的代码路径吗?

python - 遍历多维数组

python - 绘制 2 度线性回归的困难

python - 如何在 Linux 上的 Python3.x 中检查窗口是否存在

python - BeautifulSoup4 的文本缺失

python-3.x - 从数据子集的列中创建虚拟对象,其中不包含该列中的所有类别值

python - MatplotLib 3.0.1 中 ax.set_xlabel() 和 ax.xaxis.set_label() 的区别

python - 计算两个矩形之间的重叠面积