【发布时间】:2014-07-01 10:49:21
【问题描述】:
我今天不得不阅读并修复一些非常糟糕的脚本,我很困惑,因为我根本不明白它们为什么会起作用。需要明确的是,我永远不会做这样的事情。我的问题是在这种情况下命名空间如何工作,而不是为什么这是一个坏主意或如何做得更好。
无论如何,最简单的情况可以用两个文件重现。
test.py:
import math
math.myvar = "Is this a local variable?"
math.pi = 1.2345
import u
u.py:
import math
print(math.myvar)
print(math.pi)
现在,令我惊讶的是,运行 python test.py 将打印 myvar 和错误的 pi 值。当然,如果没有u.py 中的import math,它将不会打印myvar。这是怎么发生的?我虽然导入的模块在范围内完全是本地的。
【问题讨论】:
标签: python import module namespaces scope