EDIT: Похоже, что это очень старая "ошибка" или, фактически, функция. См., Например, эту почту
Я пытаюсь понять правила обзора Python. Точнее, я думал, что я их понимаю, но затем я нашел этот код здесь:
x = "xtop"
y = "ytop"
def func():
x = "xlocal"
y = "ylocal"
class C:
print(x)
print(y)
y = 1
func()
В Python 3.4 вывод:
xlocal
ytop
Если я заменил внутренний класс на функцию, тогда он разумно дает UnboundLocalError
. Не могли бы вы объяснить мне, почему это ведет себя странно с классами и в чем причина такого выбора правил определения области видимости?