python作用域
全局变量
不是在函数内部定义的变量,一般定义在程序开始的时候,全局变量的作用范围在整个执行程序的过程都有效。包括函数内部。
局部变量
字符串、整型类型
在函数内部定义的变量叫局部变量,局部变量的作用范围只在这个函数内部有效。如果这个局部变量的变量名和全局变量的变量名相同,局部变量会覆盖全局变量。
比如定义一个全局变量和局部变量:
name = 'zhangshan'#全局变量 def fun1(): name = 'xiaoming'#局部变量 print(name) print(name)#zhangshan fun1()#xiaoming print(name)#zhangshan
列表、集合等类型
Python中还有其它的数据类型,如列表、集合等。不同的数据类型,作用域也不同。
name = ['jack','susan','lily'] person ={'name':'lily','sex':'woman'} def fun1(): name[0] = 'lucy' person['name'] = 'hanmeimei' fun1() print(name)#['lucy', 'susan', 'lily'] print(person)#{'name': 'hanmeimei', 'sex': 'woman'}
以下两种方式知道就好,不推荐使用。
局部变量修改全局变量
局部变量一般是修改不到全局变量的,如果要在函数内部修改全局变量需要加一个关键字 global,说明 你要修改的是全局变量。
name = 'zhangshan' def fun1(): global name name = 'xiaoming' print(name)#zhangshan fun1() print(name)#xiaoming
函数内部声明全局变量
即使没有设置这个全局变量,同样用global关键字也可以声明这个变量是全局变量。
def fun1(): global name name = 'xiaoming' fun1() print(name)#xiaoming
但是不推荐这个方法。也不推荐在函数内部修改全局变量。