You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在mpmath.findroot中正确使用**kwargs参数传递额外函数参数

错误原因

你触发语法错误的核心是**kwargs = (a = 1)这段写法不符合Python语法规范:

  • 首先(a = 1)本身不是合法的Python表达式,既不能作为元组也不能作为关键字参数容器使用
  • 其次mp.findroot接收要传递给目标函数的额外参数时,不需要显式写**kwargs = ,直接将关键字参数追加在findroot的入参末尾即可,也可以先把参数打包为字典再用**拆包传入。

正确实现方案

写法1:直接传递额外关键字参数

直接把要传给func的参数写在findroot的所有内置参数之后即可,findroot会自动将额外参数透传给目标函数:

from mpmath import mp

def func(x, **parameters):
    return parameters["a"]*x*x + 1

solution = mp.findroot(f=func, x0=0.955j, solver='muller', a=1)
print(solution) # 输出结果接近1j,符合a=1时f(x)=x²+1=0的根的预期

写法2:字典打包后拆包传入

如果你的额外参数是提前批量存放在字典中的,可以用**操作符拆包后传入:

from mpmath import mp

def func(x, **parameters):
    return parameters["a"]*x*x + 1

params = {"a": 1}
solution = mp.findroot(f=func, x0=0.955j, solver='muller', **params)
print(solution)

优化建议

如果你不需要动态接收不定数量的额外参数,可以把func的入参改成显式参数,写法更直观,调用逻辑不需要改动:

def func(x, a):
    return a*x*x + 1

内容的提问来源于stack exchange,提问作者Linda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:51:01