@albertalexandrov

[замыкания] Почему аргумент внешней функции не нужно указывать как nonlocal во внутренней функции?

Привет!

Есть замыкание:

def outer(x):
  count = 555
  num = 666
  def inner():
    nonlocal count, num
    return x
  return inner


muller = outer(777)
print(muller())
print(muller.__closure__[0].cell_contents, muller.__closure__[1].cell_contents, muller.__closure__[2].cell_contents)


Насколько я понимаю, переменная х попадает в __closure__ только в том случае, когда она используется в inner?
Почему ее не нужно указывать как nonlocal наряду с count, num?
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
@FeelUs
global и nonlocal надо указывать, если ты собираешься изменить переменную.
Если ты ее только читаешь, в этом нет необходимости.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы