欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中is與==判斷的區(qū)別

 更新時間:2017年03月28日 08:46:04   投稿:hebedich  
在python中,is檢查兩個對象是否是同一個對象,而==檢查他們是否相等.這樣說起來很簡單,我們通過具體的實例來分析吧

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

先舉個例子

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

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

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

talk is cheap, show me the code

先創(chuàng)建一個列表對象,然后給它指定一個名字 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

創(chuàng)建一個新的對象,盡管值是一樣的,但是他們本質(zhì)上是兩個不同的對象,處在兩個不同的內(nèi)存空間,因此 "is" 返回的是 False。

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

有且當僅比較的兩個變量指向同一個對象時 "is" 才返回 True,而 "==" 最終取決于對象的 __eq__() 方法,本質(zhì)上兩個變量進行 "==" 比較操作調(diào)用的是對象的 __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。

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

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

總結(jié):

如果你要比較兩個值是否相同就用==,如果比較是否是同一個對象就用is.

其實python中的is比較的對象很像C語言中的指針,只有地址相同的指針才是同一個指針.

相關(guān)文章

  • 利用Python輕松解析XML文件

    利用Python輕松解析XML文件

    XML文件在數(shù)據(jù)處理和配置存儲中非常常見,但手動解析它們可能會讓人頭疼,Python提供了多種簡單高效的方法來處理XML文件,下面小編就來和大家詳細介紹一下吧
    2025-04-04
  • python實現(xiàn)k-means聚類算法

    python實現(xiàn)k-means聚類算法

    這篇文章主要為大家詳細介紹了python實現(xiàn)k-means聚類算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Django框架安裝方法圖文詳解

    Django框架安裝方法圖文詳解

    這篇文章主要介紹了Django框架安裝方法,結(jié)合圖文與實例形式詳細分析了Django框架的下載、安裝簡單使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-11-11
  • Python使用百度API上傳文件到百度網(wǎng)盤代碼分享

    Python使用百度API上傳文件到百度網(wǎng)盤代碼分享

    這篇文章主要介紹了Python使用百度API上傳文件到百度網(wǎng)盤代碼分享,本文使用了一個第三方庫poster,在文中給出了鏈接,需要的朋友可以參考下
    2014-11-11
  • 淺談tensorflow中Dataset圖片的批量讀取及維度的操作詳解

    淺談tensorflow中Dataset圖片的批量讀取及維度的操作詳解

    今天小編就為大家分享一篇淺談tensorflow中Dataset圖片的批量讀取及維度的操作詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python如何調(diào)用字典的key

    python如何調(diào)用字典的key

    在本篇文章里小編給大家分享的是關(guān)于python調(diào)用字典的key方法實例,有興趣點朋友們可以參考學習下。
    2020-05-05
  • 用Python繪制一個仿黑洞圖像

    用Python繪制一個仿黑洞圖像

    黑洞圖像大家都知道,畢竟前幾年剛發(fā)布的時候曾火遍全網(wǎng),甚至都做成表情包了。本文就來用Python繪制一個仿黑洞圖像,希望大家能夠喜歡
    2023-02-02
  • python制作定時發(fā)送信息腳本的實現(xiàn)思路

    python制作定時發(fā)送信息腳本的實現(xiàn)思路

    這篇文章主要介紹了python實現(xiàn)企業(yè)微信定時發(fā)送文本消息的實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • python 使用pandas讀取csv文件的方法

    python 使用pandas讀取csv文件的方法

    這篇文章主要介紹了python 使用pandas讀取csv文件的方法,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • python實現(xiàn)最小二乘法的方法詳解

    python實現(xiàn)最小二乘法的方法詳解

    這篇文章主要介紹了如何基于python實現(xiàn)最小二乘法的方法,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2024-02-02

最新評論