python函数的基础知识

img

img


为什么不加global是错的

你可以不加,但是用法不对。
首先,变量分全局变量和局部变量,这你知道的吧?
1.如果你在函数里只使用值,不对它进行赋值,那么自动取全局变量,除非全局变量也同样没定义,那么抛没定义的错误;
2.如果你在函数的一开始就给变量赋值,那么它就变成一个同名变量,覆盖掉了全局变量,属于局部变量,这样也没问题;
3.如果你其实是想要修改全局变量的值,而不想定义同名局部变量,那么要加global,到这里都没有问题吧?
4.如果你一开始只取值不赋值,想要获取全局变量,然而后面又重新给它赋值,那么它就自动变成了一个局部变量,一个变量不能同时是全局变量和局部变量,也不可能一会是全局变量一会是局部变量,所以它只能一开始就是局部变量,那么你在赋值的之前取值,肯定抛错误呀

不加global , 那就会提示未定义变量a , 所有的变量, 要先定义才能使用
加个 global a , 函数里, 使用a的时候,编译程序会去函数体外去找这个变量。

test2()里的a在本函数体内没有赋值,就要报错。 有了global表示a是全局变量

你在函数中,a进行重新定义,所以会报错

img