Когда вы используете from test1 import test
, вы создаете переменную в локальной области видимости, которая связана со значением test1.test
. Присвоение значения test
затем заменит его новым значением, но исходное значение test1.test
останется прежним. Так что в вашем случае, когда вы вызываете init()
в test2.py , на самом деле вместо переменной в вашей локальной области видимости принимается переменная test1.test
.
>>> import test1
>>> from test1 import test, init
>>> init()
>>> print(test)
None
>>> print(test1.test)
1
Обратите внимание, что michaeldel написал в своем ответе, что ситуация отличается, когда вы используете изменяемый тип данных (например, list или dict), так как его изменение действительно повлияет на исходную переменную. Мой ответ основан на ответе ThiefMaster на аналогичный вопрос. Вы можете проверить это для более подробного объяснения.