【问题标题】:python import and scopepython导入和范围
【发布时间】:2026-01-11 17:40:01
【问题描述】:

假设我们有两个文件“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”。但我只进口 “功能B”。我认为“从 b 导入 funcB”只会导入“funcB” 没有别的了。

为什么“funcB”可以访问“varB”?这是某种设计决策吗?

谢谢

【问题讨论】:

标签: python import


【解决方案1】:

当您导入一个模块时,它不仅可以让您访问刚刚导入的内容。它还将执行整个脚本。

这就是为什么你可以在许多脚本中看到的原因

if __name__ == '__main__':
    some code

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

【讨论】: