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

Python中如何将其他函数的可选参数名作为入参实现动态调用

问题实现方案

核心原理

你需要的效果完全可以实现,核心依赖Python的**关键字参数解包语法,配合字符串类型的参数名传递即可完成。
原代码报错是因为直接传入标识符a时,Python会将其识别为普通变量去全局作用域查找,找不到就抛出未定义错误,因此我们只需要将参数名以字符串形式传入即可。

最简实现代码

def foo(a=1, b=2, c=3):
    return a + b + c

def bar(variable: str):
    # 此处替换为你实际的用户输入获取逻辑
    z = int(input("请输入数值:"))
    # 构造关键字参数字典,通过**解包传递给foo
    return foo(**{variable: z})

# 传入参数名的字符串形式即可
print(bar('a'))

执行上述代码时,**{'a': z}会被Python自动解析为a=z的关键字参数传递,完全符合你期望的调用效果。

可选:参数合法性校验

如果需要避免传入foo不存在的参数名导致报错,可以提前提取foo的参数列表做校验:

import inspect

def foo(a=1, b=2, c=3):
    return a + b + c

# 提前获取foo的所有合法参数名
FOO_PARAMS = set(inspect.signature(foo).parameters.keys())

def bar(variable: str):
    if variable not in FOO_PARAMS:
        raise ValueError(f"无效参数名:{variable},foo支持的参数为{list(FOO_PARAMS)}")
    z = int(input("请输入数值:"))
    return foo(**{variable: z})

print(bar('a'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:45:03