局部变量仅在其作用域内生效,全局变量在任何地方都生效
1 name = "dog" #全局变量 2 sex = "男" 3 def change_name(name): 4 print("befor change", name) # befor change dog 5 name = "Tigger" # 局部变量,这个函数就是该变量的作用域 6 global sex # 将sex升级为全局变量 7 sex = "女" 8 age = 23 # 局部变量,这个函数就是该变量的作用域 9 print("after change", name) # after change Tigger 10 return 0 11 12 print(sex) # 男 13 change_name(name) 14 15 #name为dog,因为函数里的name的作用域为函数内部 16 print(name) # dog 17 18 #报错:age is nor defined ,因为函数内部的age不是全局变量 19 print("age", age) 20 # 不报错,因为global将sex设置为了全局变量 21 print(sex) # 女
注意:尽量不要将局部变量升级为全局变量
除了字符串和整数,其他数据类型(列表,字典)可以在函数里改,改了后在全局生效
1 names = ["Tigger","Dog","Cat"] 2 def change(): 3 names[0] = "大脑斧" 4 print(names) 5 return 0 6 change() 7 print(names)