Python 某个函数内有多个函数嵌套,主函数里的变量能被内部的其他函数像全局变量一样使用吗?

查看 215|回复 11
作者:zictos   
试了下,是可以正常访问的,但是无法在内部的其他函数中去修改这个外面的主函数的变量, 有没有办法能修改呢?
def func1():
    def func2():
        print(a)   #输出是 2
    a = 2
    func2()
a = 1
func1()

函数, 变量, func2, func1

723X   
定义时加 global 声明全局变量
PEax   
global a
zictos
OP
  
@723X #1 不行的,在 func2 中加 global ,那么 a 的值就等于 1 了,修改 a 后也是修改了最外面的那个 a ,不能修改 func1 函数中的那个 a
zictos
OP
  
@PEax #2 我是想在 func2 中修改 func1 中的那个 a
VYSE   
@zictos #3 初始化:a = [2]; 读写 a[0]
SimbaPeng   
nonlocal a
julyclyde   
好像是著名的 2/3 坑啊?
nonlocal 在 python3 才开始有的
zictos
OP
  
@SimbaPeng #6 感谢,这个可以使用,能成功在 func2 中修改 func1 中的 a
Kirscheis   
在 func2 里加一行
nonlocal a
但这么搞有糊屎山的嫌疑,尽量少用
您需要登录后才可以回帖 登录 | 立即注册

返回顶部