You need to enable JavaScript to run this app. Python中如何通过函数参数动态设置变量名?
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何通过函数参数动态设置变量名?

Python函数内动态生成变量名的解决方案

问题原因

  • 全局作用域下调用vars()实际返回的是全局命名空间字典globals(),修改这个字典会直接新增/修改全局变量,所以你在函数外的代码能正常运行。
  • 函数局部作用域下的vars()返回的是本地变量的只读映射,对它做赋值操作不会实际生效,所以你在函数内加的键没有真的生成本地变量,调用print(test)就会报未定义的错误。

可行解决方案

方案1:操作全局命名空间(适合需要生成全局变量的场景)

直接修改globals()字典即可实现函数内动态创建全局变量,代码如下:

def func(name):
    globals()[str(name)] = 2
    print(test)

func("test")

运行后会输出2,符合预期效果。

注意:该方案会修改全局命名空间,传入的name参数如果和已有全局变量重名会直接覆盖原有变量,仅适合少量、确认不会出现命名冲突的场景使用。

方案2:用字典存储动态键值对(更推荐的通用方案)

99%的动态变量需求都不需要真的创建独立变量,用自定义字典存储动态键值对是Python社区公认的最佳实践,完全避免命名冲突、逻辑更清晰,代码如下:

def func(name):
    # 用自定义字典存储所有动态生成的键值
    dynamic_container = {}
    dynamic_container[str(name)] = 2
    # 取值时通过字典键名访问即可
    print(dynamic_container["test"])
    # 需要外部使用就返回这个字典
    return dynamic_container

res = func("test")
# 外部也可以正常取值
print(res["test"])

运行后函数内和外部调用都会输出2,满足同等使用需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:21:04