Я знаю, что после вызова функции func, перед началом формирования локального пространства имен создается определенное число экземпляров класса 'cell', равное числу len(func.__code__.co_cellvars). Далее, по ходу привязки локальных имен этим cell-объектам назначается атрибут cell_contents, который привязывается к тому же объекту, к которому и локальное имя. Я бы хотел узнать подробно, как работает этот механизм - т. е., куда изначально "складываются" эти экземпляры 'cell', как интерпретатор потом с ними работает.
Максим Припадчев, спасибо, почитал, но, к сожалению, там довольно поверхностное описание. Те глубокие моменты, о которых я спрашивал, не рассматриваются.