这个问题是在我尝试以更加函数式的方式解决Python问题时产生的。我尝试的是简单地对一组数字进行平方,没什么大不了的。
事实证明,这样做行不通。
我检查了operator源代码,没有发现可疑的地方。
感到困惑,我开始怀疑自己的Python知识,于是自己编写了一个pow函数。
from operator import pow
from functools import partial
squared = list(map(partial(pow, b=2), range(10))
事实证明,这样做行不通。
TypeError: pow() takes no keyword arguments
混淆不解,我检查了pow(b=2, a=3)
是否可行,但它并不可行。我检查了operator源代码,没有发现可疑的地方。
感到困惑,我开始怀疑自己的Python知识,于是自己编写了一个pow函数。
def pow(a, b):
return a ** b
然后我尝试用我的函数做同样的事情,出人意料的是一切都正常了。
我不想猜测问题的原因,我只是在问为什么会有这种情况,并且是否存在解决方法。
pow()
)就是解决方法。 - Wolphlist(map(mul, *itertools.tee(range(10))))
,但这只适用于pow(x, 2)
,对于一般情况没有任何作用。 - tobias_kpow()
现在接受关键字参数,因为它的签名变成了pow(base, exp, mod=None)
。 - AChampion