假设我们有两个文件“a.py”和“b.py”
a.py公司

from b import funcB

funcB()

b.py公司
varB = 123

def funcB():
    print(varB)

正如你在“a.py”中看到的,我只从“b”导入“funcB”,
之后我在“a”中执行“funcB”,但是有些“funcB”
可以看到“b”中定义的“varB”。但我只进口了
“功能”。我以为“from b import funcB”只会导入“funcB”
没有别的了。
为什么“funcB”可以访问“varB”?这是某种设计决定吗?
谢谢

最佳答案

当您导入一个模块时,它不仅允许您访问刚刚导入的内容。它还将执行整个脚本。
这就是为什么你可以在许多脚本中看到

if __name__ == '__main__':
    some code

否则,some code将在导入时执行。因此,模块的所有函数都被声明,所有“函数外”代码都被执行。这是逻辑,否则,函数永远不能使用参数中没有给它的东西,甚至不能使用其他函数。

关于python - python导入和作用域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27566213/

10-12 19:34