小神不打网游 发表于 2023-1-11 07:30:00

家人们,这个偏函数为什么我运行不了,py3.7.0

元豪 发表于 2023-1-11 08:14:07

pow()不接受关键字参数

元豪 发表于 2023-1-11 08:14:37

我也不懂,上面的是翻译内容

小神不打网游 发表于 2023-1-11 08:20:49

元豪 发表于 2023-1-11 08:14
我也不懂,上面的是翻译内容

{:10_286:}让我们一起坐等大佬~

阿奇_o 发表于 2023-1-11 08:34:25

应该是版本不支持exp=2这样的关键字参数。我的3.10版本可以。

isdkz 发表于 2023-1-11 09:31:07

本帖最后由 isdkz 于 2023-1-11 09:33 编辑

你在交互模式执行一下 help(pow),你就知道 pow 的形参的名字,

python 3.7 的 pow 函数的形参名字跟 python 3.11 的 pow 参数的形参名字是不一样的,

而且 python 3.7 的 pow 函数不支持关键字参数,/ 表示 / 前面的参数只能以位置参数的方式传递,

python3.7:


python3.11:


所以没有办法,你的偏函数只能固定第一个参数,而且不能用关键字的方式,

要固定第二个参数就只能你自己实现闭包了

def closure(y):
    def func(x, *args):
      return pow(x, y, *args)
    return func

square = closure(2)
square(2)
square(4, 5)
pow(4, 2, 5)

>>> def closure(y):
...   def func(x, *args):
...         return pow(x, y, *args)
...   return func
...
>>> square = closure(2)
>>> square(2)
4
>>> square(4, 5)
1
>>> pow(4, 2, 5)
1
>>>

captian 发表于 2023-12-2 10:12:57

py3.7.0 中的 pow 方法关键字参数是 x, y, z 啊,你传 exp 肯定不行,因为没有 exp 这个关键字参数,你把 exp 换成 y 就可以了
square = functools.partial(pow, y=2)
页: [1]
查看完整版本: 家人们,这个偏函数为什么我运行不了,py3.7.0