导入Python文件还会将导入的文件导入shell吗?

时间:2018-09-10 01:36:36

标签: 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的文件,我仍然必须将numpy导入到shell提示符中。这是设计使然吗?还是有一次导入numpy的方法?

1 个答案:

答案 0 :(得分:3)

import具有三种完全独立的效果:

  1. 如果模块尚未在当前进程中(通过任何脚本或模块)导入,则执行其代码(通常从磁盘),然后将模块对象及其结果类,函数,和变量。
  2. 如果模块位于软件包中,请(首先导入软件包,然后)将新模块作为属性存储在包含的软件包中(这样,像scipy.special这样的引用就可以使用)。
  3. 将最终导入的模块分配给调用范围内的变量。 ({import foo.bar分配fooimport baz.quux as frob分配baz.quux到名称frob。)

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

hpaul noted一样,您可以 使用具有限定名称的另一个模块的导入,但这会滥用该模块的接口,就像使用其他任何私有名称一样,除非(例如{{1例如}}或实际上根本不是一个模块的six.moves,该模块打算来发布其他模块的名称。