school='Hebut'#school为全局变量 sex='male'#全局变量 names=['Wang Yu','Bai Jingyi','Zhang Yu'] hobby='姑娘' def change_name(name): global hobby#在函数中修改全局变量,记住以后别用这个方式 hobby='study' print('before change:',name,school) name=name.upper()#name为局部变量,函数为其作用域 age=23#age为局部变量,函数为其作用域,函数之外无效 sex='female'#局部变量 names[0]='王禹' print('after change:',name,sex,names) print(hobby)#函数调用之前还是按照之前的 name='qibajie' change_name(name) print(name)#还是原来的 #print(age) #NameError: name 'age' is not defined print(sex)#打印的是全局变量(注:字符串、单独的整数不能在局部变量中修改全局变量,而列表,字典,类,集合可以在局部中修改全局变量) print(names) print(hobby)
全局与局部变量:
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。