在 自定义函数 内定义的变量 默认就是局部变量,在没有额外声明的情况下,你要用这个函数用的就是这个局部变量
结果就是局部变量为num=num-1,因为有局部变量了,所以同名称的全局变量num=100没有引用到,自然就报错了
当然处可以改为不声明全局变量,这样就需要新建一个不同名称的局部变量就可以了
看上面的代码,如果不加global,Python解释器认为,num是函数内部声明的局部变量。
你这样理解吧,内部变量在使用的时候,会检查外部是否有同名变量,有的话,就是他了;
但是在函数体内对这个变量再次赋值,其实更改的只是函数体内的变量,外部变量没有更改到;
所以,如果你希望定义的外部变量可以在函数体内进行修改,那就要加global,不然的话,函数体内修改是传不到外面的;
简单来说就是把global声明去掉之后,num是未定义的,num=num-1是用未定义的一个变量减一再赋值给未定义的变量,报的错就是本地变量未定义。global是声明这个变量在全局环境globals()里。可以把num=100放入到函数中看看结果。上面一个例子,你在函数里加一个add=add[0]试试,也会报错。
加上跟global ……就好了