Python:从可变和不可变类型说全局变量
可变类型与不可变类型
可变类型:意味着你可以修改它的值
List(列表)、Dictionary(字典)、Set(集合)
不可变类型:不能修改值
Number(数字)、String(字符串)、Tuple(元组)
可变与不可变对全局变量的影响:
-
可变类型做全局变量,没有大问题,下面的代码输出地址相同
list = [1, 2, 3] print(id(list)) def change(): list[0] = 10 print(id(list)) change()
-
不可变类型做全局变量,如果修改它,那么没有真正的全局变量,有没有global结果是一样的,a的地址每次都不同;如果不修改,则没有问题
global a a = 10 def change(): for i in range(10): a = i print(id(a)) change()
-
想要真正修改全局变量,只能将其作为参数传进函数,有没有global结果是一样的
global a a = 10 def change(x): for i in range(10): x = i print(id(a)) change(a)