Python的全局变量和局部变量

226 阅读2分钟

局部变量:定义在函数内部的变量称为局部变量,他的作用域范围为函数内,也就是出了函数外就无效。举个简单的例子:葫芦娃在国内基本大家都认识他,大家一看到他就会知道,咦,那是葫芦娃。但是一旦出了国外,就没有人认识他了,葫芦娃的作用域范围为国内。 全局变量:定义在函数外的变量称之为全局变量,他的作用域范围为全局。再举个例子:如果把函数比作国家,那么全局就是全球,全局变量就像是阿拉伯数字,你去到哪,大家都认识。

    由上面的定义可以看出,所谓的全局变量跟局部变量主要是针对函数内外而言的。

    我们接下来举个简单的例子说明全局变量跟局部变量在实际应用中的区别:
    
    a = "python"   # 函数外定义的a为全局变量def func1():    print (a)def func2():    b = "小黑屋"  # 函数内定义的b为局部变量    print (b)func1()          # 执行函数func1func2()          # 执行函数func2print(b)         # 输出函数func2中的局部变量b>>python         # 函数func1执行后输出全局变量a>>小黑屋          # 函数func2执行后输出局部变量b                 # 在函数外输出局部变量b,出现了未定义的报错Traceback (most recent call last):  File "<pyshell#11>", line 1, in <module>    print(b)NameError: name 'b' is not defined
    
    由上可知,当你在函数内定义一个与全局变量一样名字的变量时,相当于你在函数内重新定义了一个局部变量,为什么这样说呢,因为你会发现,你在函数内重新定义这个变量后,无论你在函数内怎样改动这个函数的值,只有在函数内生效,对全局来说是没有任何影响的。也可以从侧面推测出,函数内定义的局部变量优先级大于全局变量。