0
SO pyton gurus!我剛剛發現了一個我不明白的驚人現象。該問題可以最好地顯示爲代碼:導入後更改模塊變量
#== kid.py ==#
import dad
def spam():
dad.spam()
#== dad.py ==#
import kid
x = 1
print "body", x
x = 2
def spam():
print "spam", x
if __name__ == '__main__':
x = 3
spam()
kid.spam()
print "main", x
我正在使用Python 2.7.3。你能猜出python dad.py
的輸出嗎?答案是(我希望SO有一個擾流陰影標記)body 1 body 1 spam 3 spam 2 main 3
。你能解釋一下嗎?
- 爲什麼
body 1
打印兩次? dad.x != kid.dad.x
怎麼樣?- 如果我真的需要讓兩個模塊相互導入,我該如何修改它才能正確更新
kid.dad.x
?
阿哈,'__main__''是祕密!然後我將它作爲模塊運行。謝天謝地! – h2kyeong