Python 3中的腌制关键字参数

时间:2019-02-21 08:17:35

标签: python python-3.x python-2.7 pickle

Python 2 doc说:

  

从版本2.3开始弃用:改用function(* args,** keywords)   apply(函数,参数,关键字)(请参阅解压缩参数列表)。

Pickle模块需要以下语法来定义转储对象的__reduce__方法:

def __reduce__():
     return (<A callable object>, <A tuple of arguments for the callable object.>) 

(我知道从__reduce__返回的元组的长度可以> 2,但必须<= 5。在当前问题的上下文中考虑长度2的情况。)

这意味着无法将关键字参数传递给可调用对象。在Python 2中,我有以下解决方法:

def __reduce__():
     return (apply, (<A callable object>, ((<args>,), <kwargs>))

但是,builtins.apply已在 Python 3 中删除。除了在 Python 3 中实现自己的builtins.apply版本之外,还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

您可以为此使用functools.partial

from functools import partial

def __reduce__():
     return (partial(<A callable object>, <kwargs>), ())