截止到目前,已经写了很多数据类型了:数字类型,字符串类型,列表类型,元祖类型,字典类型,集合类型。
在python中,我们对数据类型还有另外一种分类方式,我们把数据类型分为可变数据类型和不可变数据类型。
可变、不可变类型指的是id不变,type不变的前提下,value是否可变。
我们先来看看分类情况:
列表:
>>> w = [1,2,3,4,5] >>> id(w) 31768864 >>> w[1]=22.2 >>> w [1, 22.2, 3, 4, 5] >>> id(w) 31768864
字典:
>>> a = {"name":"ike","age":18} >>> a {‘name‘: ‘ike‘, ‘age‘: 18} >>> id(a) 31318400 >>> a[‘age‘]=28 >>> a {‘name‘: ‘ike‘, ‘age‘: 28} >>> id(a) 31318400
数字:
>>> a = 21 >>> id(a) 1382081616 >>> a += 1 >>> id(a) 1382081632
字符串:
>>> q = ‘hello‘ >>> id(q) 36322528 >>> q += ‘ world‘ >>> q ‘hello world‘ >>> id(q) 36356848
>>> q = ‘hello‘
>>> w = q.replace(‘h‘,‘H‘)
>>> q
‘hello‘
>>> w
‘Hello‘
当我们调用q.replace(‘h‘, ‘H‘)
时,实际上调用方法replace
是作用在字符串对象‘hello‘
上的,而这个方法虽然名字叫replace
,但却没有改变字符串‘hello‘
的内容。相反,replace
方法创建了一个新字符串‘Hello‘
并返回,如果我们用变量w指向该新字符串,就容易理解了,变量q仍指向原有的字符串‘hello‘
,但变量w却指向新字符串‘Hello‘
了.
元祖不可以修改--前边已经说过
>>> t = (1,2) >>> t(0) = 5 File "<stdin>", line 1 SyntaxError: can‘t assign to function call
原文:https://www.cnblogs.com/cnike/p/10438453.html