目录
1、局部变量:
(1)就是在函数内部定义的变量。此时定义的变量只能在函数内部使用,不能在函数外部使用。
(2)不同的函数可以有相同的变量名,不会产生影响。
(3)它的作用是临时保存函数中使用的数据。
def test1():
a = 100 #局部变量
print(a)
def test2():
a = 300 #局部变量
print(a)
test1()
test2()
运行结果:
2、全局变量:
(1)在函数外部定义的变量。
(2)对于不可变类型的全局变量,需要使用global修改全局变量。
(3)对于可变类型的全局变量,不使用global也可以修改全局变量。
a = 1 #全局变量
def test1():
a = 100 #局部变量
print(a)
test1()
print(a)
运行结果:
局部变量和全局变量的优先级:在函数体内,程序会优先寻找本函数内部是否有这个变量,若没有改变量,则再到函数外部寻找该变量。
如果想在函数内部修改不可变的全局变量的值,则需要使用关键字global:
a = 1 #全局变量
def test1():
global a
a = 100 #修改后的全局变量
print(a)
def test2():
a = 300 #局部变量
print(a)
test1()
test2()
print(a)
运行结果:
上述的全局变量是一个不可变类型,若变成可变类型如列表,想要修改列表的内容,则可不使用关键字global。
l = [1,2,3]
def test1():
l.append(4)
print(l)
test1()
运行结果:
比较可知:全局变量它的本质是不可以修改全局变量的指向,也就是不能将全局变量指向新的数据;对于可变类型,虽然改变了它的值,但是变量的指向并没有发生改变,所以对于一个全局变量,如果它是一个可变类型,不用关键字global依然可以在函数内部对它进行修改。