gpt4 book ai didi

不带关键字参数的 Python 库函数

转载 作者:太空狗 更新时间:2023-10-30 00:52:44 24 4
gpt4 key购买 nike

当我尝试对 python 中的问题应用更实用的方法时,就出现了这个问题。我尝试做的只是对数字列表进行平方,没什么大不了的。

from operator import pow
from functools import partial

squared = list(map(partial(pow, b=2), range(10))

事实证明,这是行不通的。 TypeError: pow() 没有关键字参数

很困惑,我检查了 pow(b=2, a=3) 是否做到了。它没有。

我检查了 operator source code ,没什么可疑的。

迷茫,开始怀疑自己的python知识,自己做了一个pow函数。

def pow(a, b):
return a ** b

然后我尝试用我的函数做同样的事情,令人惊讶的是,一切正常。

我不会猜测问题的原因是什么,我想问的只是为什么这是一个问题,以及是否存在解决方法。

最佳答案

如果您使用 help() 检查内置 pow()operator.pow() 的签名在交互式 shell 中运行时,您会看到它们需要positional-only 参数(注意结尾的斜线):

pow(x, y, z=None, /)
pow(a, b, /)

原因是这两个函数都是用 C 语言实现的,并且它们的参数没有名称。您必须按位置提供参数。作为解决方法,您可以创建一个纯 Python pow() 函数:

def pow(a, b):
return a ** b

另见 What does the slash(/) in the parameter list of a function mean?在常见问题解答中。

关于不带关键字参数的 Python 库函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55970072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com