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
be? - Если мне действительно нужно, чтобы оба модуля импортировали друг друга, как я могу его изменить, чтобы правильно обновить
kid.dad.x
?
A-ha, '' __main__'' был секретом! Тогда я запустил его как модуль. Спасибо, небеса! – h2kyeong