可变对象
每个对象中,都保存了三个数据:
id 标识
type 类型
value 值
列表就是一个可变对象
eg:a=[1,2,3]
a[0]=10(改对象)
这个操作是在通过变量去修改对象的值
这种操作不会改变变量所指向的对象
当我们修改对象时,如果有其他变量也指向了该对象,则修改也会在其他变量中体现
a=[4,5,6](改变量)
这个操作是在给变量重新赋值
这种操作会改变变量所指向的对象
为一个变量重新赋值时,不会影响其他的变量
一般只有在为变量赋值时才是修改变量,其余的都是修改对象
#可变对象
a=[1,2,3]
print("修改前a=",a,id(a))
#通过索引修改列表
a[0]=10
print("修改后a=",a,id(a))
#为变量重新赋值
a=[4,5,6]
print("修改后a=",a,id(a))
#该对象会影响所有指向该对象的变量
a=[1,2,3]
b=a
b[0]=10
print("a=",a,id(a))
print("b=",b,id(b))
#为一个变量重新赋值时,不会影响其他的变量
a=[1,2,3]
b=a
b=[10,2,3]
print("a=",a,id(a))
print("b=",b,id(b))
4.7.1==和is
== !=比较的是对象的值是否相等
is is not 比较的是对象的id是否相等(比较两个对象是否是同一个对象)
a=[1,2,3]
b=[1,2,3]
print(a, b)
print(id(a), id(b))
print(a==b) #a和b的值相等,使用==会返回True
print(a is b)#a和b不是同一个对象,使用 is会返回False
a=[1,2,3]
b=[1,2,3]
a=b
print(a, b)
print(id(a), id(b))
print(a==b) #a和b的值相等,使用==会返回True
print(a is b)#a和b是同一个对象,使用 is会返回True