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

Python函数默认参数调用报TypeError:意外关键字参数'h'排查

TypeError: Coeff() got an unexpected keyword argument 'h' 问题排查

核心报错原因

你贴出的Coeff函数定义里明确包含h关键字参数,正常情况下不会触发这个报错。出现这个异常的唯一原因是:代码运行时实际调用的Coeff函数,和你贴出来的定义版本不一致。
常见触发场景:

  • 修改Coeff函数定义后没有重启Python运行环境(比如Jupyter没重启内核、交互式shell没重开),内存中加载的还是之前不带h参数的旧版Coeff
  • 代码存在重名覆盖:你从其他模块导入了同名的Coeff函数,覆盖了你自己写的版本,被导入的这个函数参数列表中没有h参数
  • 作用域错误:调用位置能访问到的Coeff是其他位置定义的残缺版本,不是你贴出的这个实现

现有代码的其他问题

就算解决了函数版本加载的问题,你写的TSR_inf传参逻辑也是无效的:你在函数签名里定义了h、t_h、Per三个可选参数接收用户输入,但调用Coeff时写死了h='houle', t_h=0, Per=0,用户传入的可选参数根本没有传递下去,完全不生效。另外函数里coeff = coeff这类自赋值语句没有任何实际作用,可以删掉。
修正后的TSR_inf代码如下:

def TSR_inf(coeff, maxmin, d, h='houle', t_h=0, Per=0):
    Coeff(coeff, maxmin, d, h=h, t_h=t_h, Per=Per)

排查步骤

  1. 在调用Coeff的代码前加一行调试代码,打印当前实际加载的Coeff的参数签名,确认版本是否正确:
import inspect
print(inspect.signature(Coeff))

如果打印结果里没有h参数,就坐实了函数版本加载错误:

  • 交互式环境直接重启内核/解释器,重新执行所有函数定义代码
  • 脚本文件检查所有导入语句,找到重名导入的Coeff,修改命名避免覆盖即可

额外提醒

你贴出的Coeff实现里还有隐藏的传参错误:你提到Wave_max的定义是def Wave_max(d, h, t_h, Per):,要求4个必传参数,但你在Coeff的多个分支里只传了1-3个参数,解决当前报错后会触发Wave_max参数数量不匹配的异常,需要对应调整传参逻辑。


内容的提问来源于stack exchange,提问作者João Roquette Saldanha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:42:31