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

Python中如何根据列表长度动态创建新变量?

实现思路说明

首先明确:绝大多数场景下都不建议动态创建零散的独立变量,用Python原生的列表、字典这类结构化容器存储结果是更规范、可维护性更高的方案,只有在极少数特殊场景下才需要用到动态修改变量命名空间的写法。

推荐方案:结构化存储(优先使用)

零散的var/var1/var2这类变量后续遍历、批量处理、排查问题都非常麻烦,直接用列表按顺序存储结果即可,写法非常简洁:

import requests
import json

# 注意不要用list作为变量名,会覆盖Python内置的list类型,这里改名为url_list
url_list = ["接口地址1", "接口地址2", "接口地址3", "接口地址4"]

# 一行代码完成所有接口请求和解析,索引和你预期的变量一一对应
results = [requests.get(url).json() for url in url_list]

# 对应原来的var:results[0]
# 对应原来的var1:results[1]
# 对应原来的var2:results[2]
# 对应原来的var3:results[3]

注:requests库的响应对象自带.json()方法,效果和json.loads(response.text)完全一致,写法更简洁。

如果你需要保留var/var1这类变量名做key,用字典存储会更灵活:

result_map = {}
# 第一个值对应key为var
result_map["var"] = requests.get(url_list[0]).json()
# 后续值对应key为var1、var2...
for idx in range(1, len(url_list)):
    result_map[f"var{idx}"] = requests.get(url_list[idx]).json()

# 取值直接按key取即可:result_map["var"]、result_map["var1"]

用容器存储的优势非常明显:后续要对所有结果做统一处理(比如批量存库、批量校验字段)时,直接遍历容器即可,不需要手动枚举所有变量名,也不会污染当前作用域的命名空间,IDE可以正常做代码补全和错误检查。

不推荐但可实现的动态变量创建方法

如果你确实需要在当前作用域生成独立的var/var1这类变量,可以通过修改全局命名空间或者执行动态代码实现,但是这类写法可维护性差、有安全风险,非必要不要使用:

方法1:修改globals()命名空间

Python的全局变量存在globals()返回的字典中,直接给这个字典添加键值对就可以生成全局变量:

# 生成第一个变量var
globals()["var"] = requests.get(url_list[0]).json()
# 批量生成var1、var2...
for idx in range(1, len(url_list)):
    globals()[f"var{idx}"] = requests.get(url_list[idx]).json()

方法2:用exec()执行动态拼接的代码

通过字符串拼接出变量赋值的代码,交给exec()执行也能达到效果:

exec("var = requests.get(url_list[0]).json()")
for idx in range(1, len(url_list)):
    exec(f"var{idx} = requests.get(url_list[idx]).json()")

风险提示:如果url_list的内容可以被用户控制,exec()写法会直接导致远程代码执行漏洞,绝对不要在对外提供服务的生产代码中使用这类写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:06:24