本文主要是介绍python中的 gloabal和nonlocal的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
gloabal 将变量提升为全局变量
在函数内部修改全局的变量,如果全局中不存在就创建一个变量
a = 100
def func():# global a a = 28print(a)
func()
print(a)
不加gloabal时:
加gloabal时:
a = 100
def func():global a # 加了个global表示不再局部创建这个变量了. 而是直接使用全局的aa = 28print(a)
func()
print(a)
就将28提升为全局变量了。
nonlocal将变量提升到上一层
nonlocal 只修改上一层变量,如果上一层中没有变量就往上找一层,只会找到函数的最外层,不会找到全局进行修改
a = 10
def func1():a = 20def func2():# nonlocal a # 先注释掉a = 30print(a)func2()print(a)
func1()
结果为30 20,因为在 func1 中是30,在func2 中是20。
= 10
def func1():a = 20def func2():nonlocal aa = 30print(a)func2()print(a)
func1()
可以看出吧 func2 的变量提升到了 func1 这一层,但是没有到达全局变量。
这篇关于python中的 gloabal和nonlocal的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!