翁坤1125 发表于 2020-4-20 15:43:38

函数与变量

发现一个问题
现在,假设我们建立了一个函数a:
def a():
   v1 = 20
   print("a")
又建立了函数b:
#在a里面
def a():
   v1 = 20
   print("a")
   def b():
      global a
      while v1 == 20:
         print("符合条件!")
然而,会报错{:10_277:}
只不过,把a给去掉就不会了……
这道理谁都懂,但是即使global是可以修改全局变量……
函数里面的嵌套函数使用还是会报错!!!!!
求解
……话说……如果真的要修改当前函数上一层的变量怎么办

Hello. 发表于 2020-4-20 15:45:35

{:10_277:}

qiuyouzhi 发表于 2020-4-20 15:45:38

用nonlocal啊

翁坤1125 发表于 2020-4-20 15:48:53

Python系统3.8.1
照常理来说,
函数里面的嵌套函数使用还是会报错
这种事应该不会发生吧……

weiter 发表于 2020-4-20 15:53:19

学习一下

会计的会怎么念 发表于 2020-4-20 15:56:26

你真是个小天才呢!

sunrise085 发表于 2020-4-20 16:02:07

global a 是个什么鬼?
你的程序中没有看到全局变量a啊?
估计你打算写global v1吧?但是v1也不是全局变量啊
你在函数b中用到了外层的变量v1,那就应该用nonlocal关键字指出v1非局部变量
应该在函数b中使用变量v1之前,加上 nonlocal v1

翁坤1125 发表于 2020-4-20 16:12:18

sunrise085 发表于 2020-4-20 16:02
global a 是个什么鬼?
你的程序中没有看到全局变量a啊?
估计你打算写global v1吧?但是v1也不是全局变 ...

咳咳,不好意思啊
重点是有一个全局变量a
然后有一个函数fun1
fun1里面有一个函数fun2
在fun2里面写global a会报错欸

sunrise085 发表于 2020-4-20 16:20:06

翁坤1125 发表于 2020-4-20 16:12
咳咳,不好意思啊
重点是有一个全局变量a
然后有一个函数fun1


请把代码贴出来。
若有全局变量a的话,在函数内用global a应该是不会报错的,估计错误原因不在这里

翁坤1125 发表于 2020-4-20 16:31:06

sunrise085 发表于 2020-4-20 16:20
请把代码贴出来。
若有全局变量a的话,在函数内用global a应该是不会报错的,估计错误原因不在这里

啊对不起是我错了,
我global了两个全局变量,然后有一个打错字了
把l打成了1(字体问题)
{:10_262:}
页: [1]
查看完整版本: 函数与变量