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

函数内已给变量赋值为什么仍报local variable referenced before assignment错误?

报错原因

这个错误的核心诱因是传入的参数ls2为空可迭代对象时,for循环不会执行:你对变量c的所有赋值逻辑都写在for循环内部,这种场景下c从始至终没有被定义,后续执行if c==0的判断读取c时就会触发该报错。
即使ls2不为空,也建议在for循环外先给c赋初始值,避免后续修改循环逻辑时再踩同类坑。

修复方案

这里提供两种可行的修改方式:

  • 第一种:提前初始化c的默认值,和原有逻辑保持完全兼容:
def p3(x,y,ls2):
  c = 1  # 提前设置默认值,对应未匹配到符合条件元素的场景            
  for i in ls2:
    if abs(i[0]-x)==abs(i[1]-y):
      c=0
      break
  return False if c == 0 else True
  • 第二种:更简洁的优化写法,用Python内置any()函数实现相同逻辑,不需要额外定义变量c,天然兼容空ls2场景:
def p3(x,y,ls2):
    return not any(abs(i[0]-x) == abs(i[1]-y) for i in ls2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:45:06