【发布时间】:2015-05-28 18:01:18
【问题描述】:
我从这篇文章中找到了相当多的答案:Is there an easy way to pickle a python function (or otherwise serialize its code)?
但是,恢复的功能似乎与原来的功能略有不同,我的测试失败了。
示例代码如下:
import marshal
# serialize
f1 = lambda x: x == 0
c1 = marshal.dumps(f1.func_code)
# deserialize
f2 = types.FunctionType(c1, globals())
# test
c1 = marshal.dumps(f1.func_code)
c2 = marshal.dumps(f2.func_code)
assert c1 == c2 # fails
您知道如何改进序列化/反序列化以消除这种失真吗?
或者对相等测试部分有什么建议?
PS:只考虑简单的 lambda,不考虑复杂的闭包或普通函数。
【问题讨论】:
标签: python function serialization equality