在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:
a = 1 #把1赋值给a a = 2 #把2赋值a
这一过程中其实是重新创建新的值为2的对象a,原先指向1的变量a 被废弃了
可变类型:
l = [1,2,3] l[0] = 99
这一过程中只是修改而已,l 指向这个列表的变量没有变化
def changeList(self,mylist): mylist.extend([1,2,3]) print('函数内的list: ',mylist) def changeInt(self,a): a = 10 print('函数内的int: ',10) if __name__ == '__main__': s = Student() l = [11,22,33] s.changeList(l) print('函数外的list:',l) a = 100 s.changeInt(a) print('函数外的int: ',a) 结果: 函数内的list: [11, 22, 33, 1, 2, 3] 函数外的list: [11, 22, 33, 1, 2, 3] 函数内的int: 10 函数外的int: 100
小结
从代码可以看出,不可变的参数传入后并函数外并没有改变值,具有不可变性;而列表,传入参数后列表内容发生改变,函数外的列表也一同发生改变,具有可变性。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试