一尘不染

是否可以部分应用不带关键字参数的函数的第二个参数?

python

以python内置pow()函数为例。

xs = [1,2,3,4,5,6,7,8]

from functools import partial

list(map(partial(pow,2),xs))

>>> [2, 4, 8, 16, 32, 128, 256]

但是我如何将xs提高到2的幂?

要得到 [1, 4, 9, 16, 25, 49, 64]

list(map(partial(pow,y=2),xs))

TypeError: pow() takes no keyword arguments

我知道列表理解会更容易。


阅读 174

收藏
2020-12-20

共1个答案

一尘不染

没有

根据文档
不能
这样做(强调我自己):partial
__

部分参数

最左边的 将被前置到位置参数位置参数


您总是可以“修复”pow以使用关键字args:

_pow = pow
pow = lambda x, y: _pow(x, y)
2020-12-20