变量和全局变量-Python基础篇
1、全局变量:声明在函数外面的变量。
2、局部变量:声明这函数内部的变量。
函数在使用变量时优先使用局部变量,没有局部变量时才会使用全局变量。
如果想要修改全局变量必须使用关键字:global
# 全局变量 a = 100 def test1(): # 局部变量 a = 1 b = 8 print('a=', a) # 使用的是局部变量 print('b=', b) test1() ''' a= 1 b= 8 ''' def test2(): # 局部变量 b = 8 print('a=', a) # 使用的是全局变量,没声明局部a变量 print('b=', b) test2() ''' a= 100 b= 8 ''' # 如果我们要改变全局变量的值 def test3(): # a=90 # print(a) # 仍然是100 global a # 必须使用global a = 90 print(a) # 90 test3()
有些数据类型作为全局变量是可以不用global,也可以这函数内部进行修改的,这就涉及到可变与不可变变量。
1、不可变变量:当改变变量时地址发生了变化。
类型:int,str,float,bool,tuple
2、可变变量:变量这值发生了改变,但是地址没有变化的。
类型:list,dict,set
# 不可变变量 a = 100 print(id(a)) # 140712140542736 a = 90 print(id(a)) # 140712140542416 s = 'abc' print(id(s)) # 2429653660720 s = 'xyz' print(id(s)) # 2429653742000 print('*-' * 20) # 可变变量 l1 = [1, 2, 3] print(id(l1)) # 2974649220160 l1.append(4) print(id(l1)) # 2974649220160
可变变量可以不用global修改全局变量
book = ['西游记', '红楼梦'] def add_book(s): book.append(s) # 修改了全局变量 print(book) add_book("水浒传") # ['西游记', '红楼梦', '水浒传']