1. 函数作用域
局部变量:
函数中定义的变量,不同的函数可以有相同的变量名,它的作用是临时保存函数中使用的数据
def test_1(): a = 100 #局部变量 print(a) def test_2(): a = 300 #局部变量 print(a) test_1() test_2() """ 运行结果: 100 300 """
全局变量
模块级别定义的变量
a = 100 #全局变量 def test_1(): print(a) def test_2(): b = 300 #局部变量 print(a) print(b) test_1() # 运行结果:100 test_2() """ 运行结果: 100 200 """ print(a) # 运行结果:100
全局变量的修改:
不可变类型的全局变量, 是要使用global关键字修改;可变类型的全局变量,不使用global也可以修改
a = 100 #不可变类型 def test_1(): global a a = 1 print(a) test_1() print(a) """ 运行结果: 1 1 """ l = [1,2,3,4] #可变类型 def test_2(): l.append(5) print(l) test_1() print(l) """ 运行结果: [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] """
变量的优先级
局部变量 > 全局变量
a = 100 #全局变量 def test_1(): a = 200 #局部变量 print(a) def test_2(): b = 300 #局部变量 print(a) print(b) test_1() # 运行结果:200 test_2() """ 运行结果: 100 200 """ print(a) # 运行结果:100
全局变量的修改:
不可变类型的全局变量, 是要使用global关键字修改