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

循环生成用户数据列表遇UnboundLocalError,如何确保迭代完成后调用函数?

问题原因

你遇到的UnboundLocalError是因为每次调用get_info时,函数内部只会给当前userid对应的变量赋值,其他三个变量根本没被定义就传入了use_info。而且get_info里的变量都是局部变量,每次函数调用都会重置,之前的赋值也会丢失,完全没法攒齐四个用户的数据。

解决方案

核心思路是先收集完所有用户的数据,再统一调用use_info,不要在单次请求后就立刻调用目标函数。

修改后的代码示例

import requests

userid_list = [1, 2, 3, 4]
user_data = {}  # 用字典存储每个用户的数据,避免单独定义四个变量

def get_info(userid):
    response = requests.get(f"https://www.example.com/api/{userid}")  # 补全HTTP协议头
    return list(response.json()['a']['b'])

# 第一步:遍历所有用户,收集数据
for userid in userid_list:
    user_data[userid] = get_info(userid)

# 第二步:所有数据收集完成后,调用use_info
use_info(user_data[1], user_data[2], user_data[3], user_data[4])

关键改进点

  • 让get_info直接返回用户数据,而非在内部做变量赋值,逻辑更清晰。
  • 用字典user_data统一存储所有用户的数据,避免维护多个独立变量,后续新增用户ID时扩展性更好。
  • 将use_info的调用放在遍历完成后,确保四个用户的数据都已准备完毕。

额外优化建议

如果use_info支持接收列表类参数,可以进一步简化调用逻辑:

# 按userid_list的顺序传递所有数据
use_info(*[user_data[uid] for uid in userid_list])

这样就算后续userid_list的长度变化,也不用修改use_info的调用参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:07:07