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

Python类操作cookie触发UnboundLocalError该如何解决

问题原因
  • 当response.cookies为空时,for循环不会执行,names、values、domains三个变量从未被定义,后续调用直接触发UnboundLocalError报错。
  • 即便response.cookies非空,当前循环逻辑会反复覆盖三个变量的值,最终只能拿到最后一个cookie的属性,前面的所有cookie数据都会被丢弃,不符合常规的cookie收集需求。
修复方案

场景1:仅需要使用第一个返回的cookie

提前给变量赋默认值,避免未定义问题:

response = self.__send_http_request(req_prepared)
status_code = response.status_code
if 200 <= status_code <= 299:
    # 先初始化默认值,避免空cookie场景报错
    names = values = domains = None
    if response.cookies:
        first_cookie = next(iter(response.cookies))
        names = first_cookie.name
        values = first_cookie.value
        domains = first_cookie.domain
    
    return self.get_starships_response(
        status_code = response.status_code,
        request = req,
        name = names,
        value = values,
        domain = domains
    )
else:
    ...

场景2:需要收集所有返回的cookie

调整存储结构,用列表存储全量cookie信息,同步修改get_starships_response的入参适配即可:

response = self.__send_http_request(req_prepared)
status_code = response.status_code
if 200 <= status_code <= 299:
    cookie_list = []
    for cookie in response.cookies:
        cookie_list.append({
            "name": cookie.name,
            "value": cookie.value,
            "domain": cookie.domain
        })
    
    return self.get_starships_response(
        status_code = response.status_code,
        request = req,
        cookies = cookie_list
    )
else:
    ...

如果确定业务逻辑就是要取最后一个cookie,也可以按照场景1的逻辑,先判断response.cookies非空再取最后一个元素赋值,避免空迭代的报错问题。

内容的提问来源于stack exchange,提问作者João Galdino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:45:01