01 Python中is和==的区别
变量的三要素:变量名、赋值符号、变量值
首先定义一个变量:x=10
变量名:x
赋值符号:=
变量值:10
变量值的三大特征:id、type、value
- id:映射的是变量值的内存地址,内存地址不同,则id不同;
- type:不同类型的值用来表示记录不同的状态;
- value:变量值本身。
x = 10 print(id(x)) # 返回结果:140734572124096
name="sky天空空"
print(type(name)) # 返回结果:<class 'str'>
print(name) # 返回结果:sky天空空
is 和 == 的区别****
定义变量a=10,b=20
is:比较左右两个变量值的id(身份)是否相等;
==:比较左右两个变量值的value(值)是否相等
a=10
b=20
print(a is b) # 输出结果:False
print(a == b) # 输出结果:False
c=10 d=10 print(c is d) # 输出结果:True
print(c == d) # 输出结果:True
print(id(c)) # 输出结果:140734572124096
print(id(d)) # 输出结果:140734572124096 # 此时变量c和变量d的id是相同的
x=257
y=257
print(x is y) # 输出结果:False print(x == y) # 输出结果:True
name1="sky天空空"
name2="sky天空空"
print(name1 is name2) # 输出结果:False
print(name1 == name2) # 输出结果:True
print(id(name1))
print(id(name2)) # name1和name2的id是不同的
了解:
小整数池 从python解释器启动的那一刻开始,就会在内存中事先申请一系列内存空间存放好常用的整数,这些整数的范围是:[-5,256]。 所以,对于在这些范围内的同一个整数赋值给不同的变量,那些变量所对应的id都是相同的(因为该整数已经提前被存放到内存当中)。
总结:
变量的id不同情况下,value值有可能相同,即两块不同的内存空间里可以存放相同的值;
变量的id相同情况下,value值一定相同,a is b 成立,a == b 也必然成立。

浙公网安备 33010602011771号