加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

不能在python 3中腌制lambda函数

发布时间:2020-12-20 12:13:21 所属栏目:Python 来源:网络整理
导读:使用莳萝酸洗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
使用莳萝酸洗lambda函数在 Python 2中运行良好,但在Python 3中没有,有没有其他选择?

Python 3:

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

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

Python 2.7:

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

cdill.dilln_create_functionnp0n(cdill.dilln_load_typenp1n(S’CodeType’np2ntp3nRp4n(I1nI1nI2nI67nS’|x00x00dx01x00x13S’np5n(NI2ntp6n(t(S’x’np7ntp8nS”np9nS”np10nI1nS”np11n(t(ttp12nRp13nc__main__n__dict__ng10nNN(dp14ntp15nRp16n.

解决方法

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

这适用于python 3.5:

>>> import dill 
>>> dill.dumps(lambda x: x**2)
b'x80x03cdill.dilln_create_functionnqx00(cdill.dilln_load_typenqx01Xx08x00x00x00CodeTypeqx02x85qx03Rqx04(Kx01Kx00Kx01Kx02KCCx08|x00x00dx01x00x13Sqx05NKx02x86qx06)Xx01x00x00x00xqx07x85qx08Xx07x00x00x00<stdin>qtXx08x00x00x00<lambda>qnKx01Cx00qx0b))tqx0cRqrc__builtin__n__main__nhnNN}qx0etqx0fRqx10.'

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读