среда, 1 апреля 2020 г.

ЛМНты Python, 51 - 55

>>> Как замыкания

Интересно, что во вложенных функциях используемые нелокальные переменные точно так же доступны через locals(), как это происходит в замыканиях с бесплатными переменными:

>>> def f():
...     one = 1
...     print('f:', locals())
...     def g():
...         two = one + 1
...         print('g:', locals())
...         def h():
...             three = two + 1
...             print('h:', locals())
...         h()
...     g()
...
>>> f()
f: {'one': 1}
g: {'two': 2, 'one': 1}
h: {'three': 3, 'two': 2}

Вложенные функции, даже не потерявшие связь с контекстом, в котором они созданы, выглядят как замыкания.