例:
cou=0 def createCounter(): return cou = 5
报错:
UnboundLocalError: local variable 'i' referenced before assignment
这是由于在一个范围内,对一个变量进行赋值,这个变量变成该范围内的局部变量,会首先调用这个变量(而不会调用外部的相同变量名的变量),由于foo函数中最后一行代码对x赋了一个新值,编译器认为这是一个局部变量。
所以在执行i = 1 + i
的时候。因为i被重新赋值了,所以i的作用域编程createCounter函数范围。同时将它原来在createCounter函数范围外的同名变量i消除。然后,执行1 + i的时候就出错了,此时i还没有定义呢!所以报错:UnboundLocalError: local variable 'i' referenced before assignment
。