导入模块,导入另一个模块。蟒

时间:2017-11-10 15:00:00

标签: python python-import

我很好奇当我们导入一个模块然后导入另一个模块时会发生什么。所以我创建了两个模块:module1和module2。

模块1:

import random
print(random.randint(0,10))
print("module1 work")

模块2:

import module1
print("module2 work")

当我运行module2时,它会给我输出:

1
module1 work
module2 work

因此,当我导入random时,我确定我确实导入了module1。但是当我输入Shell print(random.randint(0,10))时,它会抛出NameError: name 'random' is not defined。因此,random未从module1导入。但在这种情况下,为什么module2打印1,并没有抛出与Shell相同的错误?

2 个答案:

答案 0 :(得分:4)

每个模块都有自己的范围(或命名空间,如果您更熟悉该术语)。如果您想从random访问module2,则需要在module2中导入random。解释器共享您执行的模块的范围,因此只能访问在该模块的全局命名空间中声明的变量。如果您想从仅导入module2的翻译中访问module1.random,则需要指定import module1

或者,您可以将from module1 import *替换为random。这将复制所有内容,包括对random的引用。因此,APPINSIGHTS_INSTRUMENTATIONKEY = "INSTRUMENTATION KEY" 可以在全球范围内访问。

答案 1 :(得分:0)

这是因为你实际上没有将随机导入shell,而只是包含模块的文件。

我们可以使用现有模块作为示例,例如使用以下命令打开的tkinter:

import enum
import sys

它们会导入到Tkinter模块中,但是当你导入Tkinter时,它们不会随附它。

要尽可能简单地将module1随机导入,但提升module1也不会导入random