首次使用后重新分配时,局部变量上出现UnboundLocalError
以下代码可在Python 2.5和3.0中正常工作: a, b, c = (1, 2, 3) print(a, b, c) def test(): print(a) print(b) print(c) # (A) #c+=1 # (B) test() 但是,当我取消注释(B)行时,我UnboundLocalError: 'c' not assigned在(A)行得到了注释。的值a和b被正确地打印。这使我完全困惑,原因有两个: 为什么由于行(B)的后面的语句而在行(A)抛出运行时错误? 为什么在按预期方式打印变量a并产生错误?bc 我能提出的唯一解释是,局部变量c是由赋值创建的c+=1,它c甚至在创建局部变量之前就优先于“全局”变量。当然,在变量存在之前“窃取”范围是没有意义的。 有人可以解释这种现象吗?