python基础-函数的作用域及global关键字

        Python中,变量的作用域决定了在哪一部分可以访问哪个特定的变量名称,根据变量的作用域,函数中的变量可分为全局变量和局部变量。

示例一:

        定义一个全局变量b,全局变量b可以在函数内部、函数外部使用,局部变量只能在函数内部使用,在函数外部使用会报错。

b = 1  #全局变量
def fun():
    a = 0  #局部变量
    print(a) #在函数内部输出a的值
    print(b)  #在函数中输出全局变量b的值
fun()
print(b) #在函数外输出全局变量b的值
#print(a) 在函数外输出a,a下方将会出现红线 

输出结果

0
1
1

示例二:

        一般情况下,定义在函数外的变量为默认为全局变量,函数内部为局部变量,函数内的变量b是定义了一个与全局变量b同名的局部变量,函数内的打印是打印局部变量的值,函数外的打印是打印全局变量的值

b = 1  #全局变量
def fun():
    a = 0  #局部变量
    b = 10 #在函数中定义了一个与全局变量同名的局部变量
    print(a)
    print(b)  #输出局部变量b的值
fun()
print(b) #输出全局变量b的值

输出结果:

0
10
1

示例三:使用global关键字

        若想在函数中改变全局变量b的值,需要使用关键字global对b重新赋值,这个可以改变b的值,所以函数内部与外部b的值保持一致

b = 1  #全局变量
def fun():
    a = 0  #局部变量
    global b #声明这个b是全局变量
    b = 10 #给全局变量重新赋值
    print(a)
    print(b)  #输出重新赋值后b的值
fun()
print(b) #输出全局变量b的值

输出结果

0
10
10

示例四:

        调用变量方法不算重新赋值,列表是可变变量

list = [1,2]  
def fun():
    list.append(3)
    print(list)
fun()
print(list)

         输出结果

[1, 2, 3]
[1, 2, 3]

        如果给列表重新赋值,需要使用global,两个输出结果一致,如果不使用global。相当于重新定义了一个局部变量。函数内输出的是局部变量的值

list = [1,2]
def fun():
    global list
    list = [4,5]
    print(list)
fun()
print(list)

全局变量的使用规则如下:

        1、在一个函数中创建一个变量时,默认情况下,它是局部变量,只在当前函数中生效

        2、在一个函数外定义一个变量时,默认它是全局变量,不需要使用global关键字

        3、在函数中读取一个全局变量时,不需要加global关键字,但是如果要给全局变量重新赋值,需要使用global,注意:调用该变量的方法不算重新赋值,比如list.append()这种不用global

        4、如果函数内部有与全局变量名字相同的局部变量,则全局变量必须使用global来标识。

        5、在一个函数外使用global关键字没有效果

猜你喜欢

转载自blog.csdn.net/xiatian22/article/details/129213973
今日推荐