局部变量仅在其作用域内生效,全局变量在任何地方都生效
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)