我有兩個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