ТАКИЕ гуру pyton! Я только что обнаружил удивительное явление, которого не понимаю. Проблему лучше всего показать в виде кода:
#== 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
?