Код: Выделить всё
def outer():
x = "world"
def inner():
print(f"Hello {x}")
return inner
Что мы получаем от этой промежуточной ячейки? Почему эти две переменные не могут указывать непосредственно на ячейку памяти, содержащую наш строковый объект?
С точки зрения подсчета ссылок даже после завершения работы функции external() у нас все еще есть счетчик ссылок, равный 1 (поскольку у нас все еще есть переменная x.inner), поэтому диспетчер памяти Python не сможет очистить эту промежуточную ячейку. Но у нас был бы тот же счетчик ссылок, если бы эти две переменные указывали непосредственно на ячейку памяти, содержащую строковый объект. Так что я думаю, это не имеет никакого отношения к подсчету ссылок.
Итак, в чем идея этой промежуточной ячейки и почему нам нужно ее использовать?
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/752 ... r-closures
Мобильная версия