函数(二)

七.局部变量、全局变量

name = "李四"         #定义name = "李四"

def name_change():

    name = "张三"     #在函数中把name修改为张三

    print(name)

name_change()         #调用函数,打印函数中的name

print(name)           #打印函数外的name

运行结果:

张三
李四

发现虽然函数内把name修改了,但是对函数外的name毫无影响,函数内的name就叫局部变量

name = "李四"         #定义name = "李四"
def name_change():
    print(name)       #不修改name,直接打印
name_change()         #调用函数,打印函数中的name
print(name)           #打印函数外的name

运行结果:

李四
李四

定义在函数外部的一级代码的变量就是全局变量,全局能用,所以函数引用有一个优先级,如果函数内有局部变量的话,先用局部变量,若是函数内没有变量则引用全局变量

假如,一定要在函数中修改全局变量,可以使用global

name = "李四"         #定义name = "李四"

def name_change():

  global name    #使用global方法 name
= "张三" #在函数中把name修改为张三 print(name) name_change() #调用函数,打印函数中的name print(name) #打印函数外的name

结果:

张三
张三

使用global后,在函数中修改name后发现全局变量也发生了变化

注意:若是先赋值再用global的话就会报错

name = "张三"

global name

遇到列表时,情况又有变化

L1 = [123,456,789]

def num_change():

    L1[0] = "abc"

    print(L1)

num_change()

print(L1)

结果:

['abc', 456, 789]
['abc', 456, 789]
在函数中修改了列表中的值,则全局的列表也会发生变化
原文地址:https://www.cnblogs.com/sunj-96/p/10638757.html