字符串的不可变性
字符串是一种不可变数据类型,即它的值不能被修改,这意味着如果想修改一个字符串,或者截取一个字符串,或者再字符串末尾连接另一个字符串等等,就必须新建一个字符串
元组
元组是一种不可变类型,正因为这个原因,元组能做一些列表不能做的事情,例如,元组可以做一个字典的key,另外,当处理一组对象是,这个组默认是元组类型
元组不可变也是有一定限度的,若元组中含有可变的元素,那么,在这个层面上的元组也是可以改变的
a = ([1,'s'], 'a', 1)
a[0][1] = 2
print(a)
>>> ([1,2], 'a', 1)
字典
字典中的键是不可以改变的,所以数字和字符串可以作为字典中的键,但是列表和其他字典则不行
不预序一个键对应多个值,键必须是可以哈希的
字典可以和所有的标准类型操作符一起工作,但却不支持拼接和重复的操作。
# 当字典作为参数传入函数后,在函数内的修改操作会影响函数外的字典的值
dic = {1:'1', 2:'2'}
def foo(d):
d[3] = '3'
foo(dic)
print(dic)
>>> {1:'1', 2:'2', 3:'3'}
is 和 == 的区别
在python中一切都是对象。
Python中对象包含的三个基本要素,分别是:
id(身份标识)
type(数据类型)
value(值)
对象之间比较是否相等可以用==,也可以用is,但判断的内容不同:
is 比较的是两个对象的id值是否相等,即is用来比较是否引用同一个对象
== 比较的是两个对象的value是否相等,默认会调用对象的_eq_()方法。
import copy
a=[1,2,3]
b=a
c=copy.copy(a)
print("a的id:",id(a)) # a的id: 1901149178696
print("b的id:",id(b)) # b的id: 1901149178696
print("c的id:",id(c)) # c的id: 1901145557768
print("a==b",a==b) # a==b True
print("a is b",a is b) # a is b True
print("a==c",a==c) # a==c True
print("a is c",a is c) # a is c False