1. 变量值的三个特征:
id: 反映的是内存地址
type:数据类型
值:
age=18
print(id(age))
print(type(age))
print(age)
id: 反映的是内存地址
type:数据类型
值:
age=18
print(id(age))
print(type(age))
print(age)
总结:
1.1. id相同,值一定相同
1.2. 值相同,id可以不同
1.1. id相同,值一定相同
1.2. 值相同,id可以不同
>>> x='name:egon age:18***'
>>> y='name:egon age:18***'
>>> id(x)
2847698422856
>>> id(y)
2847698422928
'''
>>> y='name:egon age:18***'
>>> id(x)
2847698422856
>>> id(y)
2847698422928
'''
x=11111111111111111111111111231231231231222222222222 y=11111111111111111111111111231231231231222222222222
print(id(x))
print(id(y))
print(id(y))
2. Cpython解释器的垃圾回收机制
什么是垃圾:当一个值身上没有人绑定任何变量名(该值的引用计数=0)时,该值就是一个垃圾
什么是垃圾:当一个值身上没有人绑定任何变量名(该值的引用计数=0)时,该值就是一个垃圾
注:
引用计数增加
age=18 # 18的引用计数等于1
x=age # 18的引用计数等于2
print(age)
print(x)
引用计数增加
age=18 # 18的引用计数等于1
x=age # 18的引用计数等于2
print(age)
print(x)
引用计数减少
age=19 #18的引用计数等于1
print(age)
del x #18的引用计数等于0
3,.可变类型与不可变类型
l=['a','b','c']
print(id(l))
l[0]='A'
print(id(l))
# print(l)
可变类型: 值改变,id不变,证明就是在改变原值
不可变类型:值改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可变类型
x=10
print(id(x))
x=11
print(id(x))
不可变类型:值改变,id也变,证明根本不是在改变原值,是创建了新值,原值就是不可变类型
x=10
print(id(x))
x=11
print(id(x))
l=['a','b','c']
print(id(l))
l[0]='A'
print(id(l))
# print(l)
4, is 与 ==
==:值是否相等
is:id是否相等
==:值是否相等
is:id是否相等