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
正确更新?答案 0 :(得分:4)
__main__
模块与导入dad.py作为dad
模块无关。__main__
。但总的来说,不要尝试这个。找到另一种完成任务的方法(例如课程)。在dad.py顶部打印__name__
将说明这一点。