91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 中 "is" 與 "==" 有什么區別?

發布時間:2021-07-27 16:02:29 來源:億速云 閱讀:207 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關Python 中 "is" 與 "==" 有什么區別?,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在 Python 中,比較兩個對象(變量)是否相等,可以用 “is” 和 “==” 操作,但它倆有什么區別?什么時候用 “is”,什么時候用 “==” ?在面試時,發現不少候選人很難把這兩者完全說清楚,因此在這篇文章中,「Python之禪」將對二者進行深入淺出的對比介紹。

先舉個例子

小黃最近手頭非常寬裕,花重金購買了一輛 P90D 特斯拉,我們暫且給這車取名叫 “小P” ,這輛車和隔壁老王家的車(車名叫 “小 王”)是一模一樣的,無論是型號、外表還是價格都一樣,是同批次生產的。這里我們可以說 “小P” 和”小王”是兩輛一模一樣的、相等的(euqal),但本質上這是兩個不同的對象。有一天小君給他的愛車又取了一個網名叫 “愛駒”,當我們說 “小P” 的時候其實就是在討論 “愛駒”,因為本質上兩個名字指的是同一個對象,這里我們把 “小P” 和 “愛駒” 稱為完全相等的(identical)。

在 Python 中,”==” 和 “is” 的區別可類比這個例子 ,前者是相等性比較,比較的是兩個對象中的是否相等,后者是一致性比較,比較的是兩個對象的內存空間地址是否相同。

顯然,如果內存地址相同,那么他們的值肯定也是一樣的,因此,如果 “is” 返回 True,那么 “==” 一定也返回 True,反之卻不成立。

talk is cheap, show me the code

先創建一個列表對象,然后給它指定一個名字 a,再定義另外一個變量 b,讓它指向同一個對象。

>>> a = [1, 2, 3]
>>> b = a

a 和 b 打印的值都是相等的,因為這兩個變量指向的是同一個對象,就好比給一輛車起了兩個不同的名字。

>>> a
[1, 2, 3]
>>> b
[1, 2, 3]

理所當然, is 和 == 都返回 True。

>>> a == b
True
>>> a is b
True

創建一個新的對象,盡管值是一樣的,但是他們本質上是兩個不同的對象,處在兩個不同的內存空間,因此 “is” 返回的是 False,但它們的值是相同的,所以 "==" 操作返回 True

>>> c = [1,2,3]
>>> a is c
False
>>> a == c
True

有且當僅比較的兩個變量指向同一個對象時 “is” 才返回 True,而 “==” 最終取決于對象的 __eq__() 方法,本質上兩個變量進行 “==” 比較調用的是對象的 __eq__() 方法。例如:

>>> class Foo(object):
      def __eq__(self, other):
          return True

>>> f = Foo()
>>> f == 1
True
>>> f == None
True
>>> f is None
False

因為自定義類 Foo 的 eq 方法恒返回 True,因此它與任何對象進行 “==” 都是返回 True。而它與 None 是兩個不同的對象,因此 ‘is’ 操作返回的是 False。

最后請大家思考這段代碼,為什么同樣的操作會有不同的結果

>>> a = 257
>>> b = 257
>>> a is b
False
>>> a = 123
>>> b = 123
>>> a is b
True

上述就是小編為大家分享的Python 中 "is" 與 "==" 有什么區別?了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

那曲县| 临猗县| 苏尼特右旗| 阳新县| 南召县| 宁河县| 安塞县| 巧家县| 化德县| 大邑县| 嘉定区| 碌曲县| 丰原市| 松滋市| 昆山市| 桓仁| 达拉特旗| 茶陵县| 孝义市| 金溪县| 花莲市| 神农架林区| 盖州市| 泽州县| 阿荣旗| 措美县| 遂昌县| 怀仁县| 老河口市| 阳新县| 双城市| 邢台县| 广汉市| 浦江县| 甘谷县| 湖口县| 商都县| 富民县| 阿城市| 汉川市| 山阳县|