Пожалуйста, посмотрите на этот «модуль»:
"""Module a"""
a = None
b = None
def gna():
global a
if a is None:
global b
a = 7
b = "b"
print("in a.py: a={}".format(a))
print("in a.py: b={}".format(b))
Я бы подумал, что вызов gna () из другого модуля инициализирует переменные:
"""Module b"""
from a import a, b, gna
print("in b.py: a={}".format(a))
print("in b.py: b={}".format(b))
gna()
print("in b.py: a={}".format(a))
print("in b.py: b={}".format(b))
Но:
% python3 b.py
in b.py: a=None
in b.py: b=None
in a.py: a=7
in a.py: b=b
in b.py: a=None
in b.py: b=None
И я не понимаю, почему a и b равны None после вызова gna ...