Python变量范围错误
以下代码在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
被正确地打印。这让我感到困惑,原因有两个:
为什么在行(A)处抛出运行时错误,因为后面的行(B)语句?
为什么变量a
和b
打印符合预期,同时c
引发错误?
我能想到的唯一解释是,赋值创建了一个局部变量,即使在创建局部变量之前,它也优先于“全局”变量。当然,变量在存在之前“窃取”范围是没有意义的。c
c+=1
c
有人可以解释一下这种行为吗?
jeck猫