我有两个Python模块:Python的范围/命名空间的问题
//// funcs.py
from classes import *
def func():
d = D()
print "func"
if __name__ == "__main__":
c = C()
//// classes.py
from funcs import *
class C:
def __init__(self):
print "C class"
func()
class D:
def __init__(self):
print "D class"
运行funcs.py产生一个NameError,称“全局名称'D'未定义”。但是,如果我注释掉D()实例的创建,那么一切正常。
为什么会出现这种情况?
感谢
“要求编译模块”充其量是误导性的。模块代码被加载,编译和运行。但是'import mim''复制模块中的所有内容,'import m'给出模块对象的引用,因此可以看到后面的修改。 – delnan