python中is和==的区别

例子

1 a = "abc"
2 b = a
3 c1 = "abcd"
4 c = c1[:-1]
5 print("a=", a, "b=", b, "c=", c)
6 print(a == b, a is b, id(a), id(b))
7 print(a == c, a is c, id(a), id(c))

运行结果

1 a= abc b= abc c= abc
2 True True 15638144 15638144
3 True False 15638144 54938848

分析

a, b, c的值都是"abc",但是b是直接由a赋值得到的,所以可以看到a和b的id是一样的,也就是都指向内存中的同一块区域。c是由其它方式来的,虽然值和a的一样,但是id不一样,也就是它们指向内存中的不同区域。

结论

==只是判断两个变量的值是否一样,一样则是True,否则为False。is判断的是两个变量的id,即是不是指向内存中同一块区域,是的话则为True,否则为False。

原文地址:https://www.cnblogs.com/pyexile/p/11221263.html