Форум сайта python.su
0
Добрый день.
Читаю статью по декораторам, и наткнулся на одним не совсем понятный момент… Подскажите, пожалуйста.
Статья.
8 часть, имеется код:
>>> def outer(): ... x = 1 ... def inner(): ... print x # 1 ... return inner >>> foo = outer() >>> foo.func_closure # doctest: +ELLIPSIS (<cell at 0x...: int object at 0x...>,)
> We aren’t able to call inner till after the return of outer so according to our model of how Python works, x shouldn’t exist anymore by the time we call inner and perhaps a runtime error of some kind should occur.
Отредактировано setevoy (Июнь 1, 2015 20:56:56)
Офлайн
857
setevoyОн имеет в виду, что переменная x существует во время выполнения outer() и разрушается при выходе из outer(). Но она не уничтожена, хотя outer() и завершила работу. И дальше он вводит понятие замыкания.
Но - почему `We aren't`, если мы сохранили outer() в foo, со всем её пространством имён и переменными?
Отредактировано py.user.next (Июнь 2, 2015 01:10:34)
Офлайн
0
Спасибо. То, что надо.
Отредактировано setevoy (Июнь 2, 2015 07:57:28)
Офлайн