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:
    .....
Другие вопросы по тегам