У меня проблема с моей программой, и я смог воспроизвести это неожиданное (по крайней мере, неожиданное для меня) поведение в небольшом масштабе, так что теперь я уверен, что это не другая ошибка.
Допустим, у меня есть 3 модуля Python: one
, two
и three
.
В three
имеем:
var = 0
list = []
Итак, у нас есть целое число, равное нулю, и пустой список.
В two
имеем:
from three import var, list
def funct():
print var*2
print list
return
Итак, мы импортируем var
и list
и просто определяем функцию, которая будет печатать оба и возвращать.
Вместо того, чтобы вызывать funct()
в two
, я вызывал его в one
, но не раньше, чем совершал с ними «операции».
from three import var, list
from two import funct
if 2 < 4:
var += 1
list.append("x")
print funct()
Итак, вот и мой вопрос.
Я никогда не ожидал такого результата:
0
['x']
None
Почему x
был добавлен в список с append()
, а 1 НЕ добавлено к var
, чтобы быть понятным. Я ожидал:
2
['x']
None
Если вам очень странно, что они получают разные виды лечения при одинаковых обстоятельствах.
- Я что-то здесь упускаю?
- Что-то не так с импортом?
Если нет:
- Почему он так себя ведет?
- Как решить / решить эту проблему?
Спасибо заранее.