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

如何将字符串转换为函数的关键字参数进行调用?

解决字符串作为关键字参数传递的问题

嘿,这个坑我之前踩过!你现在的问题很明确:你把'bar = 1'当成参数传给foo时,Python只会把它当作单个字符串参数处理,自然就变成了foo('bar = 1'),而不会自动解析成你想要的关键字参数格式。

下面给你两种实用的解决思路,按需选择:

方法1:解析字符串为字典,用**解包传递关键字参数

这是最安全也最推荐的方式,手动把字符串拆成键值对,转成字典后用**操作符解包成关键字参数:

def foo(bar=None):
    print(f"bar的值是:{bar}")

# 你的目标字符串
string = 'bar = 1'

# 分割键和值,顺便去掉多余空格
key, value_str = [part.strip() for part in string.split('=')]
# 注意:如果值是数字类型,需要手动转换(如果是字符串就不用)
value = int(value_str)

# 用**解包字典,实现foo(bar=1)的效果
foo(**{key: value})

如果你的字符串里有多个关键字参数(比如'bar=1, baz=2'),可以扩展成这样:

string = 'bar=1, baz=2'
params = {}
for pair in string.split(','):
    k, v_str = [p.strip() for p in pair.split('=')]
    params[k] = int(v_str)

foo(**params)

方法2:用eval快速实现(谨慎使用!)

如果你的字符串是完全可控、无风险的(比如自己写的固定字符串,不是用户输入的内容),可以用eval直接执行拼接后的代码:

string = 'bar = 1'
eval(f'foo({string})')

⚠️ 重要提醒:绝对不要用eval处理不可信的输入(比如用户提交的字符串),因为这会导致代码注入风险,恶意代码会直接被执行!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:59:20