天天看點

Python中is和==的差別

Python中有很多運算符,今天我們就來講講is和==兩種運算符在應用上的本質差別是什麼。

在講is和==這兩種運算符差別之前,首先要知道Python中對象包含的三個基本要素,分别是:id(身份辨別)、type(資料類型)和value(值)。

is和==都是對對象進行比較判斷作用的,但對對象比較判斷的内容并不相同。下面來看看具體差別在哪。

==比較操作符和is同一性運算符差別

==是python标準操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等,例如下面兩個字元串間的比較:

例1.

is也被叫做同一性運算符,這個運算符比較判斷的是對象間的唯一身份辨別,也就是id是否相同。通過對下面幾個list間的比較,你就會明白is同一性運算符的工作原理:

例2.

Python中is和==的差別
Python中is和==的差別

前三個例子都是True,這什麼最後一個是False呢?x、y和z的值是相同的,是以前兩個是True沒有問題。至于最後一個為什麼是False,看看三個對象的id分别是什麼就會明白了。

下面再來看一個例子,例3中同一類型下的a和b的(a==b)都是為True,而(a is b)則不然。

例3.

Python中is和==的差別
Python中is和==的差別

通過例3可看出,隻有數值型和字元串型的情況下,a is b才為True,當a和b是tuple,list,dict或set型時,a is b為False。

本文轉自ZH奶酪部落格園部落格,原文連結:http://www.cnblogs.com/CheeseZH/p/5260560.html,如需轉載請自行聯系原作者