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

igo*_*nov 3 python python-import

我很好奇,当我们导入一个模块又导入另一个模块时会发生什么。因此,我创建了两个模块:module1和module2。

模块1:

import random
print(random.randint(0,10))
print("module1 work")
Run Code Online (Sandbox Code Playgroud)

模块2:

import module1
print("module2 work")
Run Code Online (Sandbox Code Playgroud)

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

1
module1 work
module2 work
Run Code Online (Sandbox Code Playgroud)

因此,我决定在导入random时确实导入了module1。但是,当我键入Shell时,print(random.randint(0,10))它会引发一个NameError: name 'random' is not defined。所以random不是从进口的module1。但是在这种情况下,为什么要进行module2print 1,而没有引发与Shell相同的错误?

sty*_*ybl 5

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

另外,您也可以替换import module1使用from module1 import *。它将复制所有内容,包括对的引用random。因此random将可以在全球范围内访问。