python报错 UnboundLocalError:local variable 'XXX' referenced before assignment


报错:UnboundLocalError:local variable 'b' referenced before assignment.

原因是:在函数外定义的变量是全局变量,函数里定义的是局部变量,在没有明确声明函数里的变量是全局变量的话,默认都是局部变量.


可以看到,在函数里输出的b的值为123,但是在函数外输出b是1,说明并非是同一个变量。但是当我们把第15行的b = 123改成b+=123,这个时候可能我们是想在b = 1的基础上让b加上123,但是我们并没有告诉电脑b是全局变量,所以b默认还是局部的变量,此时我们让b += 123.他就会报这个错误,因为我们并没有给b初始化一个值,所以他是没法对123进行累加,所以报次错误。

解决办法:在函数里加上 global b

global标识符:它是全局变量的标识符。如果某变量在函数里没有定义, 就自动使用相应的全局变量. 没有global是不可能手动指定一个名字是全局的.


你可能感兴趣的:(python报错 UnboundLocalError:local variable 'XXX' referenced before assignment)