发布网友 发布时间:2022-05-07 03:28
共5个回答
热心网友 时间:2022-04-18 16:56
在 自定义函数 内定义的变量 默认就是局部变量,在没有额外声明的情况下,你要用这个函数用的就是这个局部变量
结果就是局部变量为num=num-1,因为有局部变量了,所以同名称的全局变量num=100没有引用到,自然就报错了
当然处可以改为不声明全局变量,这样就需要新建一个不同名称的局部变量就可以了
热心网友 时间:2022-04-18 18:14
看上面的代码,如果不加global,Python解释器认为,num是函数内部声明的局部变量。
追问那可是我的代码是我在函数外定义num的值他理应就是一个全局变量啊,我不加global他在函数内也应该能取到啊,为什么还要加呢?麻烦您回答下,谢谢。追答上面给你举了例子
你不加global,函数内部的num已经指向了新的引用,而不是外部的那个num。
所以再次打印外部num的值,仍然是100。
热心网友 时间:2022-04-18 19:48
你这样理解吧,内部变量在使用的时候,会检查外部是否有同名变量,有的话,就是他了;热心网友 时间:2022-04-18 21:40
简单来说就是把global声明去掉之后,num是未定义的,num=num-1是用未定义的一个变量减一再赋值给未定义的变量,报的错就是本地变量未定义。global是声明这个变量在全局环境globals()里。可以把num=100放入到函数中看看结果。上面一个例子,你在函数里加一个add=add[0]试试,也会报错。追问请问我给的num=100难道不是给num的定义吗?您说的我没能完全理解追答python不允许函数内修改未声明的全局变量,这是*全局变量范围的约束,不加声明直接改的话,在编写程序中很大程序上会因为别的程序跟全局变量命名相同而出现意外结果
热心网友 时间:2022-04-18 23:48
加上跟global ……就好了