全局与局部变量
定义:
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
作用域:
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
1 def change_name(name): 2 print('before change',name) 3 name='Zoe' #局部变量。这个函数就是这个局部变量的作用域。 4 print('after change',name) 5 6 name='zoe' #全局变量。 7 change_name(name) 8 print(name)
将函数中的局部变量声明为全部变量。
1 def change_name(name): 2 global school #用global在函数中将布局变量声明为全局变量。 3 school='666' 4 print('before change',name) 5 name='Zoe' #局部变量。这个函数就是这个局部变量的作用域。 6 print('after change',name) 7 8 name='zoe' 9 change_name(name) 10 print(name) 11 print(school) #在函数中global定义全局变量,如果函数不调用,则会返回school未定义。
除了字符串,元组,数字等本身就不能变的变量不能在函数中进行修改,列表,字典和集合等定义好的全局变量,在子程序中还是可以进行修改的。
看下面的函数:
1 names=['zoe','alice'] 2 def change(): 3 print(names) 4 names[0]='Zoe' 5 6 print(names) 7 change() 8 print(names)
返回: