is和==

一、id内存地址

s = 'alex'
print(s,type(s),id(s))
li = [1,2,3]
print(li,type(li),id(li))

二、is和==

==比较的是值
is比较的是内存地址
对于int,小数据池,范围-5~256创建的相同的数字,都指向同一个内存地址
对于字符串,小数据池,范围最多20个字符,如果有空格或特殊字符,那指向两个内存地址

s1 = 'alex'
s2 = 'alex'
print(s1 == s2)
print(s1 is s2)

列表,字典,元祖,集合都指向两个内存

l1 = [1,2,3]
l2 = [1,2,3]
print(l1 == l2)
print(id(l1),id(l2))
print(l1 is l2)  # is比较的是内存地址,此处为False

 

posted on 2017-10-27 08:55  杨小天  阅读(84)  评论(0)    收藏  举报