@ooboo:
Он берет одну «ближайшую» точку отсчета в исходном коде. Это называется «Лексическое определение» и является стандартным для> 40 лет.
Члены класса Python действительно находятся в словаре под названием __dict__
и никогда не будут достигнуты лексическим охватом.
Если вы не укажете nonlocal
, но выполните x = 7
, он создаст новую локальную переменную «x». Если вы укажете nonlocal
, он найдет «ближайший» «x» и назначит ему это. Если вы укажете nonlocal
и нет «x», оно выдаст вам сообщение об ошибке.
Ключевое слово global
всегда показалось мне странным, так как оно будет радостно игнорировать все остальные «x» «за исключением самого внешнего. Странно.