Функции в Python имеют доступ к переменным, определенным во внешней области видимости благодаря механизму замыкания (closure). Когда функция вложена в другую функцию, она имеет доступ ко всем переменным, определенным в окружающей функции, даже после того, как эта функция завершила свое выполнение.
Интерпретатор Python обрабатывает создание объектов класса 'cell' при вызове функции следующим образом: каждый раз, когда функция создается, создается объект класса 'cell' для каждой переменной, которая используется внутри функции и является переменной внешней области видимости. Этот объект хранит значение этой переменной в момент создания функции.
Когда функция обращается к переменной, интерпретатор обращается к объекту 'cell' и получает значение, хранящееся в атрибуте cell_contents. Таким образом, значения переменных из внешней области видимости сохраняются и могут быть использованы функцией в любое время, даже после завершения выполнения внешней функции.