Yes, python can pickle lambda functions… but only if you have something that uses copy_reg
to register how to pickle lambda functions -- the package dill
loads the copy_reg
you need into the pickle registry for you, when you import dill
.
Python 2.7.8 (default, Jul 13 2014, 02:29:54)
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import dill # the code below will fail without this line
>>>
>>> import pickle
>>> s = pickle.dumps(lambda x, y: x+y)
>>> f = pickle.loads(s)
>>> assert f(3,4) == 7
>>> f
<function <lambda> at 0x10aebdaa0>
get dill here: https://github.com/uqfoundation
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…