Код: Выделить всё
def test():
y = x
y = y + 1
return y
x = 5
print(test())
print(x)
6
5
Это имеет смысл: глобальная переменная x входит в конструкцию локальной переменной y при вызове функции.
Кроме того, следующая программа
Код: Выделить всё
def test():
x = 6
return x
x = 5
print(test())
print(x)
6
5
Опять же, это имеет смысл: переопределение x при вызове функции, я думаю, является локальным переопределением, которое уничтожается после вызова функции.
Ввиду того, как ведут себя две вышеупомянутые программы, я бы ожидал, что следующая программа
Код: Выделить всё
def test():
x = x + 1
return x
x = 5
print(test())
print(x)
Код: Выделить всё
Traceback (most recent call last):
File "", line 6, in
File "", line 2, in test
UnboundLocalError: cannot access local variable 'x' where it is not associated with a value
Мобильная версия