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

调用find_zero函数时出现function参数重复赋值TypeError的解决方法

问题分析与解决方案

错误原因

你调用find_zero时出现的TypeError,是因为同一个参数function被重复赋值:

  • 第一个位置参数H被绑定到find_zero的function形参
  • 同时又通过关键字参数function=g再次给function赋值

Python不允许同一个参数既通过位置传递、又通过关键字传递重复赋值,因此触发错误。

修正方案

1. 重构find_zero函数逻辑

原函数没有将迭代过程中变化的d值传递给目标函数H,需要调整参数传递逻辑,明确区分固定参数和迭代变量:

def find_zero(target_func, eps, alpha, init_value, **fixed_vars):
    error = 1
    k = 1
    result = init_value

    while abs(error) > eps:
        # 将当前迭代的d值(result)与固定参数一起传入目标函数
        error = target_func(d=result, **fixed_vars)
        result -= alpha / k * error
        k += 1

    return result

改动说明:

  • 新增init_value参数,明确传入d的初始值,避免依赖全局变量
  • 将原**vars拆分为**fixed_vars,用于传递迭代过程中不变的参数(如r、size等)
  • 每次调用目标函数时,主动传入当前迭代的d值

2. 修正调用代码

去掉重复的function参数传递,按新的函数签名传入参数:

for i in range(len(R)):
    d[i] = find_zero(
        H, 
        eps, 
        alpha, 
        init_value=init_d,  # 替换为你的d初始值变量
        function=g, 
        size=size, 
        lower_bound=x0, 
        upper_bound=xf, 
        r=R[i]
    )

额外检查项

  • 确保f函数中的sqrt已正确导入(如import numpy as np后使用np.sqrt)
  • 确保H函数依赖的V和K是已定义的全局变量,或可通过fixed_vars传递

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:40:18