Python学习之函数的作用域

目录

1、局部变量:

2、全局变量:


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依然可以在函数内部对它进行修改。

猜你喜欢

转载自blog.csdn.net/weixin_56197703/article/details/122864429