python中的全局变量与局部变量

  全局变量与局部变量两者的本质区别就是在于作用域,全局变量即在整个程序中,任何地方都可以访问。而局部变量,试着在函数内部声明的变量,当函数运行结束时,局部变量就会被内存释放。

例子:

1 name='zs'
2 def change():
3      name='ls'
4      change()
5 print(name)   #输出为:’zs'  函数内的name是一个局部变量,函数运行结束即消失

如果要修改全局变量,要在函数内部用关键字global声明。

1 name='zs'
2 def change():
3     global name
4     name='ls'
5 change()
6 print(name)     #输出为 ls   

其实局部变量是有层次的,如果出现函数的嵌套,内层函数想调用外层的变量是,是不能用global声明的,因为外层的变量不叫全局变量。这时候如果想修改外层的变量,就得用到一个新的关键字:nonlocal  

#强行使用global变量会报错,下面代码可以自己运行试试

def fun():
    a = 3

    def fun2():
        global a
        a*= 2
        print(a)

    return fun2()
fun()       

 如果使用nonlocal就可以完美解决:

 1 def fun():
 2     a = 3
 3 
 4     def fun2():
 5         nonlocal a
 6         a*= 2
 7         print(a)
 8 
 9     return fun2()
10 fun()           #输出 6

猜你喜欢

转载自www.cnblogs.com/linshuhui/p/8977756.html