#Python系列#--Python中==和is的区别

user

雨橙

中国.四川.成都

世界之上、唯有远见、惟爱不变。


Python中有很多运算符。
 
在说is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
 
is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同,下面来看看具体区别在哪。
 
==比较操作符和is同一性运算符区别
 
==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面的比较:
#Number
a=b=z=1
x = 1
print(a==b)
print(x == a)
print(id(a))
print(id(x))


#String
a1 = "hello"
b1 = "hello"
print(a1 == b1)
 
返回结果都是True。这里比较的是两个值是否相等。
 
 
is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。通过对下面几个list间的比较,就会明白is同一性运算符的工作原理:
#list
a2 = ["1","2"]
b2 = ["1","2"]
print(a2 == b2)
print(a2 is b2)
print(id(a2))
print(id(b2))


#tuple
a3 = (1,2,3)
b3 = (1,2,3)
print(a3 == b3)
print(a3 is b3)
print(id(a3))
print(id(b3))


#dict
a4 = {"key":"value"}
b4 = {"key":"value"}
print(a4 == b4)
print(a4 is b4)
print(id(a4))
print(id(b4))


#set
a5 = set([1,3,5])
b5 = set([1,3,5])
print(a5 == b5)
print(a5 is b5)
print(id(a5))
print(id(b5))
 
当对象类型为:list,tuple,dict,set类型时.is比较的结果均返回Flase,==比较的结果均为True。
所以只有当对象为Number,String类型时is和==比较的结果才相同。
posted at