def a(): n = 0 def b(): n+=1 print(n) return b return b
这样写会报错,提示local variable 'b' referenced before assignment,但是在函数a里面已经定义了n,再到函数b里面使用n,这时n不是a里面的n了吗? 是因为用了n+=1(n = n + 1)吗?那如果确实要用外层那个变量n,并自增,要怎么写呢?
使用dict或list等引用类型的可以实现,但是不明白上面这个问题的原理。是因为 n = n+1 把n给重新定义了吗?
因为int类型不是默认全局变量,外层函数的int变量如果要被内层函数引用要声明nonlocal a,表明这里的a并不是函数b的本地变量
Sign in to make a reply
Jason_Yadi
这样写会报错,提示local variable 'b' referenced before assignment,但是在函数a里面已经定义了n,再到函数b里面使用n,这时n不是a里面的n了吗? 是因为用了n+=1(n = n + 1)吗?那如果确实要用外层那个变量n,并自增,要怎么写呢?