Python: функция, определенная в цикле while, ссылается на старую переменную
У меня есть функция, которую я определяю в цикле while, которая вызывается кодом, который я не контролирую.
В следующем примере access() всегда возвращает значение 1. Почему? И как я могу заставить access() возвращать последнее значение?
while True:
g = [1,2,3]
def access():
return g[0]
print(access())
g[0] += 1
То же самое, похоже, верно и для лямбда-выражений. Я не могу сделать g глобальным.
1 ответ
Поскольку
g
переменная всегда повторно инициализируется
[1,2,3]
.
Просто переместите его за пределы
while
петля .
g = [1,2,3]
while True:
.....