不能在python 3中腌制lambda函数

不能在python 3中腌制lambda函数,第1张

概述使用莳萝酸洗lambda函数在 Python 2中运行良好,但在Python 3中没有,有没有其他选择? Python 3: import dill import picklepickle.dumps(lambda x: x**2) pickle.PicklingError: Can’t pickle at 0x104e97840>: attribute lookup on main fail 使用莳萝酸洗lambda函数在 Python 2中运行良好,但在Python 3中没有,有没有其他选择?

Python 3:

import dill import picklepickle.dumps(lambda x: x**2)

pickle.PicklingError: Can’t pickle at
0x104e97840>: attribute lookup on main Failed

Python 2.7:

import dillimport picklepickle.dumps(lambda x: x**2)

cdill.dill\n_create_function\np0\n(cdill.dill\n_load_type\np1\n(S’CodeType’\np2\ntp3\nRp4\n(I1\nI1\nI2\nI67\nS’|\x00\x00d\x01\x00\x13S’\np5\n(NI2\ntp6\n(t(S’x’\np7\ntp8\nS”\np9\nS”\np10\nI1\nS”\np11\n(t(ttp12\nRp13\nc__main__\n__dict__\ng10\nNN(dp14\ntp15\nRp16\n.

解决方法 好像在python 2中,dill在导入时会替换pickle.在python 3中,你必须直接使用dill.

这适用于python 3.5:

>>> import dill >>> dill.dumps(lambda x: x**2)b'\x80\x03cdill.dill\n_create_function\nq\x00(cdill.dill\n_load_type\nq\x01X\x08\x00\x00\x00CodeTypeq\x02\x85q\x03Rq\x04(K\x01K\x00K\x01K\x02KCC\x08|\x00\x00d\x01\x00\x13Sq\x05NK\x02\x86q\x06)X\x01\x00\x00\x00xq\x07\x85q\x08X\x07\x00\x00\x00<stdin>q\tX\x08\x00\x00\x00<lambda>q\nK\x01C\x00q\x0b))tq\x0cRq\rc__builtin__\n__main__\nh\nNN}q\x0etq\x0fRq\x10.'

或者,您也可以将莳萝作为泡菜进口

>>> import dill as pickle >>> pickle.dumps(lambda x: x**2)
总结

以上是内存溢出为你收集整理的不能在python 3中腌制lambda函数全部内容,希望文章能够帮你解决不能在python 3中腌制lambda函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存