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
Python2.7.3を使用しています。の出力を推測できますかpython dad.py
?答えは(SOにスポイラーシェーディングタグがあればいいのに)body 1 body 1 spam 3 spam 2 main 3
です。だからあなたは説明できますか
- なぜ
body 1
2回印刷されるのですか? - どうすれば
dad.x != kid.dad.x
いいですか? - 2つのモジュールを相互にインポートする必要がある場合、
kid.dad.x
適切に更新されるように変更するにはどうすればよいですか?