鱼C论坛

 找回密码
 立即注册
查看: 3582|回复: 6

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

[复制链接]
发表于 2023-1-11 07:30:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
微信截图_20230111073124.png
最佳答案
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:
pow1.png

python3.11:
pow2.png

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

要固定第二个参数就只能你自己实现闭包了
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
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-11 08:14:07 | 显示全部楼层
pow()不接受关键字参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-11 08:14:37 | 显示全部楼层
我也不懂,上面的是翻译内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-1-11 08:20:49 | 显示全部楼层
元豪 发表于 2023-1-11 08:14
我也不懂,上面的是翻译内容

让我们一起坐等大佬~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-11 08:34:25 From FishC Mobile | 显示全部楼层
应该是版本不支持exp=2这样的关键字参数。  我的3.10版本可以。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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:
pow1.png

python3.11:
pow2.png

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

要固定第二个参数就只能你自己实现闭包了
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
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-2 10:12:57 | 显示全部楼层
py3.7.0 中的 pow 方法关键字参数是 x, y, z 啊,你传 exp 肯定不行,因为没有 exp 这个关键字参数,你把 exp 换成 y 就可以了
square = functools.partial(pow, y=2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 22:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表