Есть ли способ сериализации лексического закрытия в Python с использованием стандартной библиотеки? рассол и маршал, похоже, не работают с лексическими закрытиями. Меня не волнуют детали двоичной и сериализации строк и т.д., Она просто должна работать. Например:
def foo(bar, baz) :
def closure(waldo) :
return baz * waldo
return closure
Я бы хотел просто удалить экземпляры закрытия в файл и прочитать их обратно.
Изменить: Один относительно очевидный способ, которым это можно решить, - это некоторые рефлексивные хаки для преобразования лексических замыканий в объекты класса и наоборот. Затем можно было бы преобразовать в классы, сериализовать, unserialize, конвертировать обратно в закрытие. Heck, учитывая, что Python утка напечатана, если вы перегрузили оператор вызова функции класса, чтобы он выглядел как функция, вам даже не нужно было бы преобразовывать его обратно в закрытие, а код, использующий его, не знал бы разница. Если у вас есть какие-либо гуру API-анализа API Python, пожалуйста, говорите.