七.局部变量、全局变量
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]
在函数中修改了列表中的值,则全局的列表也会发生变化