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

如何以编程方式高效将多参数以名称为键添加到字典

符合Python风格的动态参数转字典方案

嘿,这个需求太常见了!我来给你几个既Pythonic又高效的方案,彻底摆脱手动写重复赋值语句的麻烦~

方案1:直接用locals()快速搞定

如果你的函数参数都是固定的(没有*args/**kwargs),而且函数开头还没定义其他变量,直接用locals()就能一步到位:

def create_results_dict(age, sex, name):
    # 此时locals()里刚好就是传入的所有参数键值对
    return locals().copy()

调用示例:

print(create_results_dict(28, "female", "Alice"))
# 输出: {'age': 28, 'sex': 'female', 'name': 'Alice'}

⚠️ 注意:一定要在函数开头、还没定义任何其他局部变量前调用locals(),不然会把你后续定义的变量也混进字典里哦。

方案2:用inspect模块处理复杂参数场景

如果你的函数涉及可变参数(*args/**kwargs)、默认参数,或者想更严谨地避免混入无关变量,inspect模块是最佳选择——它能帮你精准获取函数的参数签名和绑定的参数值:

import inspect

def create_results_dict(age, sex, name="Unknown", *args, **kwargs):
    # 获取当前函数的参数签名
    sig = inspect.signature(create_results_dict)
    # 绑定传入的所有参数(包括位置参数、关键字参数)
    bound_args = sig.bind(*args, **kwargs)
    # 自动填充默认参数(如果有的参数没传)
    bound_args.apply_defaults()
    # 转换成字典返回
    return dict(bound_args.arguments)

调用示例:

print(create_results_dict(30, "male", extra_info="developer"))
# 输出: {'age': 30, 'sex': 'male', 'name': 'Unknown', 'args': (), 'kwargs': {'extra_info': 'developer'}}

这个方案完全不用担心混入额外变量,而且能完美处理各种参数类型,灵活性拉满。

方案3:用**kwargs极简实现(适合关键字参数调用场景)

如果你能接受调用函数时必须用关键字参数,那这个方案最简洁高效:

def create_results_dict(**kwargs):
    return kwargs.copy()

调用示例:

print(create_results_dict(age=25, sex="non-binary", city="Beijing"))
# 输出: {'age': 25, 'sex': 'non-binary', 'city': 'Beijing'}

优点是代码极简,执行效率最高;缺点是无法直接支持位置参数调用,适合只需要关键字参数的场景。

关于你的核心疑问:能不能编程获取参数名称?

当然可以!inspect模块就是干这个的:

  • 通过inspect.signature(func).parameters能拿到函数所有参数的名称和属性
  • bound_args.arguments就是参数名称与对应值的映射字典,完全满足你“动态获取参数名和值”的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:17:21