例子
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。