一、全局变量
1、在函数外部或者类外部声明的变量默认为全局变量。全局变量的生命周期直到程序结束才会结束,比局部变量生命周期更长。作用域为定义的模块,从定义位置开始直到模块结束。
2、global :函数内声明全局变量,然后才使用全局变量。如果在局部中要对全局变量修改,而不使用global关键字。
count = 0
def global_test():
count += 1
print(count)
global_test()
执行结果:
出现错误!
3、要在函数内改变全局变量的值,使用global声明一下
a = 100 #全局变量
def f1():
global a #如果要在函数内改变全局变量的值,增加global关键字声明
print(a) #打印全局变量a的值
a = 300
f1()
f1()
print(a)
结果:
100
300
二、局部变量
1、在函数体中(包含形式参数)声明的变量。一旦函数结束,变量的生命周期也会结束,占用的空间会被自动释放。
def func1():
# 在函数内部定义的变量默认都是局部变量
a = 1
print(a)
# 函数结束,局部变量a的生命周期结束
# 由于a是局部变量,并且a的生命周期已经结束,外部再次调用局部变量a,程序会产生异常,崩溃
print(a)
程序报错:NameError: name ‘a’ is not defined ,原因:函数内部定义的局部变量只能在函数内部使用。
三、总结
1、局部变量的查询和访问速度比全局变量快,优先考虑使用,尤其是在循环的时候。
2、如果局部变量和全局变量同名,在函数内隐藏全局变量,只使用同名的局部变量。
a=100
def f1():
a = 3 #同名的局部变量
print(a)
f1()
print(a) #a仍然是100,没有变化
执行结果:
3
100