码迷,mamicode.com
首页 > 编程语言 > 详细

Python中is和==的区别的

时间:2016-12-20 19:54:45      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:back   false   地址   语言   不同的   val   str   ack   比较   

在python中,is检查两个对象是否是同一个对象,而==检查他们是否相等.

str1 = yangshl
str2 = yang + shl
print(str1 == str2:, str1 == str2)
print(str1 is str2:, str1 is str2)
print("id(str1):", id(str1))
print("id(str2):", id(str2))

 输出结果是:

str1 == str2: True
str1 is str2: True
id(str1): 17102416
id(str2): 17102416

问题:str1 是 一个对象吗??从id上看,的确是一个。

 

one = yang
two = shl
str3 = one+two
print(str1 == str3:, str1 == str3)
print(str1 is str3:, str1 is str3)
print("id(str1):", id(str1))
print("id(str3):", id(str3))

的结果是:

str1 == str3: True
str1 is str3: False
id(str1): 17102416
id(str3): 17102528

 

str3的计算结果明明是 yangshl。但是它和yangshl是不同的对象,但是value是相同的。

str4 = str(yangshl)
str5 = str(yangshl)
print(str4 == str5:, str4 == str5)
print(str4 is str5:, str4 is str5)
print("id(str4):", id(str4))
print("id(str5):", id(str5))

结果是:
str4 == str5: True
str4 is str5: True
id(str4): 17102416
id(str5): 17102416

java中会认为是不同的对象。但是在python中这说明使用 str和字符串直接量是一个对象。

 

如果比对list呢?

list1 = [1]
list2 = [1]
print(list1 == list2:, list1 == list2)
print(list1 is list2:, list1 is list2)
print("id(list1):", id(list1))
print("id(list2):", id(list2))

结果是:
list1 == list2: True
list1 is list2: False
id(list1): 16919944
id(list2): 16920520

 

所以如果你要比较两个值是否相同就用==,如果比较是否是同一个对象就用is。

其实python中的is比较的对象很像C语言中的指针,只有地址相同的指针才是同一个指针。

 

Python中is和==的区别的

标签:back   false   地址   语言   不同的   val   str   ack   比较   

原文地址:http://www.cnblogs.com/yangshl/p/6203604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!