首页 > 代码库 > Python中is和==的区别的

Python中is和==的区别的

在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和==的区别的