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

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

 更新時(shí)間:2017年03月28日 08:46:04   投稿:hebedich  
在python中,is檢查兩個(gè)對(duì)象是否是同一個(gè)對(duì)象,而==檢查他們是否相等.這樣說(shuō)起來(lái)很簡(jiǎn)單,我們通過(guò)具體的實(shí)例來(lái)分析吧

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

先舉個(gè)例子

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

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

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

talk is cheap, show me the code

先創(chuàng)建一個(gè)列表對(duì)象,然后給它指定一個(gè)名字 a,再定義另外一個(gè)變量 b,讓它指向同一個(gè)對(duì)象。

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

a 和 b 打印的值都是相等的,因?yàn)檫@兩個(gè)變量指向的是同一個(gè)對(duì)象,就好比給一輛車起了兩個(gè)不同的名字。

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

理所當(dāng)然, is 和 == 都返回 True。

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

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

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

有且當(dāng)僅比較的兩個(gè)變量指向同一個(gè)對(duì)象時(shí) "is" 才返回 True,而 "==" 最終取決于對(duì)象的 __eq__() 方法,本質(zhì)上兩個(gè)變量進(jìn)行 "==" 比較操作調(diào)用的是對(duì)象的 __eq__() 方法。例如:

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

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

因?yàn)樽远x類 Foo 的 eq 方法恒返回 True,因此它與任何對(duì)象進(jìn)行 "==" 都是返回 True。而它與 None 是兩個(gè)不同的對(duì)象,因此 'is' 操作返回的是 False。

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

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

總結(jié):

如果你要比較兩個(gè)值是否相同就用==,如果比較是否是同一個(gè)對(duì)象就用is.

其實(shí)python中的is比較的對(duì)象很像C語(yǔ)言中的指針,只有地址相同的指針才是同一個(gè)指針.

相關(guān)文章

  • Python中線程編程之threading模塊的使用詳解

    Python中線程編程之threading模塊的使用詳解

    這篇文章主要介紹了Python中線程編程之threading模塊的使用詳解,由于GIL的存在,線程一直是Python編程中的焦點(diǎn)問(wèn)題,需要的朋友可以參考下
    2015-06-06
  • python學(xué)習(xí)實(shí)操案例(四)

    python學(xué)習(xí)實(shí)操案例(四)

    這篇文章主要介紹了python學(xué)習(xí)實(shí)操案例,這一篇小編給大家?guī)?lái)的是列表,所以這里是和列表有關(guān)的案例,需要的小伙伴可以參考一下,希望對(duì)你有所幫助<BR>
    2022-02-02
  • python文本處理的方案(結(jié)巴分詞并去除符號(hào))

    python文本處理的方案(結(jié)巴分詞并去除符號(hào))

    這篇文章主要介紹了python文本處理的方案(結(jié)巴分詞并去除符號(hào)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python定制類你不知道的魔術(shù)方法

    Python定制類你不知道的魔術(shù)方法

    你知道什么是定制類?Python中包含很多內(nèi)置的(Built-in)函數(shù),異常,對(duì)象。分別有不同的作用,我們可以重寫這些功能,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2022-07-07
  • 使用Pycharm+PyQt5彈出子窗口的程序代碼

    使用Pycharm+PyQt5彈出子窗口的程序代碼

    這篇文章主要介紹了使用Pycharm+PyQt5彈出子窗口的解決方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • 微信跳一跳python輔助腳本(總結(jié))

    微信跳一跳python輔助腳本(總結(jié))

    本篇文章為大家整理了關(guān)于微信跳一跳的輔助腳本內(nèi)容,這次我們給大家整理的是關(guān)于python的腳本內(nèi)容,一起來(lái)學(xué)習(xí)下。
    2018-01-01
  • 使用pygame實(shí)現(xiàn)垃圾分類小游戲功能(已獲校級(jí)二等獎(jiǎng))

    使用pygame實(shí)現(xiàn)垃圾分類小游戲功能(已獲校級(jí)二等獎(jiǎng))

    這篇文章主要介紹了使用pygame實(shí)現(xiàn)垃圾分類小游戲功能(已獲校級(jí)二等獎(jiǎng)),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • web.py獲取上傳文件名的正確方法

    web.py獲取上傳文件名的正確方法

    這篇文章主要介紹了web.py獲取上傳文件名的正確方法,遇到這個(gè)問(wèn)題的朋友可能會(huì)困惑半天,使用本文的正確方法就可以解決這個(gè)問(wèn)題了,需要的朋友可以參考下
    2014-08-08
  • python靜態(tài)方法實(shí)例

    python靜態(tài)方法實(shí)例

    這篇文章主要介紹了python靜態(tài)方法,實(shí)例分析了python靜態(tài)方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • Pytorch中的Tensorboard與Transforms搭配使用

    Pytorch中的Tensorboard與Transforms搭配使用

    這篇文章主要介紹了Pytorch中的Tensorboard與Transforms搭配使用,主要是結(jié)合了前兩篇文章的的一個(gè)小練習(xí),感興趣的小伙伴可以來(lái)練習(xí)一下,希望對(duì)你的學(xué)習(xí)有所幫助
    2021-12-12

最新評(píng)論