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

一文搞懂Python中is和==的區(qū)別

 更新時間:2023年01月10日 11:43:06   作者:惡霸程序員388  
is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內(nèi)容并不相同,下面來看看具體區(qū)別在哪?對Python中is和==的區(qū)別感興趣的朋友跟隨小編一起看看吧

在Python中一切都是對象。

Python中對象包含的三個基本要素,分別是:id(身份標(biāo)識)、type(數(shù)據(jù)類型)和value(值)。對象之間比較是否相等可以用==,也可以用is。

is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內(nèi)容并不相同。下面來看看具體區(qū)別在哪?

is比較的是兩個對象的id值是否相等,也就是比較兩個對象是否為同一個實例對象,是否指向同一個內(nèi)存地址。

==比較的是兩個對象的內(nèi)容是否相等,默認(rèn)會調(diào)用對象的__eq__()方法。

以下代碼在Python3.5下測試通過。

==比較操作符和is同一性運算符區(qū)別

==是python標(biāo)準(zhǔn)操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等。

代碼1:

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

解釋一下為什么?is也被叫做同一性運算符,也就是id是否相同??聪旅娲a, a和b變量的id不同, 所以b==a是True, b is a 是False.

代碼2:

>>> id(a)
4364243328
>>> 
>>> id(b)
4364202696

哪些情況下is和==結(jié)果是完全相同的?

代碼3:

>>> a = 256
>>> b = 256
>>> a is b
True
>>> a == b
True
>>>
>>> a = 1000
>>> b = 10**3
>>> a == b
True
>>> a is b
False
>>>

結(jié)論:數(shù)字類型不完全相同。 

為什么256時相同, 而1000時不同?

因為出于對性能的考慮,Python內(nèi)部做了很多的優(yōu)化工作,對于整數(shù)對象,Python把一些頻繁使用的整數(shù)對象緩存起來,保存到一個叫small_ints的鏈表中,在Python的整個生命周期內(nèi),任何需要引用這些整數(shù)對象的地方,都不再重新創(chuàng)建新的對象,而是直接引用緩存中的對象。Python把這些可能頻繁使用的整數(shù)對象規(guī)定在范圍[-5, 256]之間的小對象放在small_ints中,但凡是需要用些小整數(shù)時,就從這里面取,不再去臨時創(chuàng)建新的對象。

代碼4:

>>> c = 'pythontab.com'
>>> d = 'pythontab.com'
>>> c is d
False
>>> c == d
True
>>> c = 'pythontabcom'
>>> d = 'pythontabcom'
>>> c is c
True
>>> c == d
True

結(jié)論:字符串類型不完全相同。這個和解釋器實現(xiàn)有關(guān)。

代碼5:

>>> a = (1,2,3) #a和b為元組類型
>>> b = (1,2,3)
>>> a is b
False
>>> a = [1,2,3] #a和b為list類型
>>> b = [1,2,3]
>>> a is b
False
>>> a = {'python':100,'com':1} #a和b為dict類型
>>> b = {'python':100,'com':1}
>>> a is b
False
>>> a = set([1,2,3])#a和b為set類型
>>> b = set([1,2,3])
>>> a is b
False

結(jié)論

當(dāng)變量是數(shù)字、字符串、元組,列表,字典時,is和==都不相同, 不能互換使用!當(dāng)比較值時,要使用==,比較是否是同一個內(nèi)存地址時應(yīng)該使用is。當(dāng)然,開發(fā)中比較值的情況比較多。

在Python中一切都是對象。

Python中對象包含的三個基本要素,分別是:id(身份標(biāo)識)、type(數(shù)據(jù)類型)和value(值)。對象之間比較是否相等可以用==,也可以用is。

is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內(nèi)容并不相同。下面來看看具體區(qū)別在哪?

is比較的是兩個對象的id值是否相等,也就是比較兩個對象是否為同一個實例對象,是否指向同一個內(nèi)存地址。

==比較的是兩個對象的內(nèi)容是否相等,默認(rèn)會調(diào)用對象的__eq__()方法。

以下代碼在Python3.5下測試通過。

==比較操作符和is同一性運算符區(qū)別

==是python標(biāo)準(zhǔn)操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等。

代碼1:

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

解釋一下為什么?is也被叫做同一性運算符,也就是id是否相同??聪旅娲a, a和b變量的id不同, 所以b==a是True, b is a 是False.

代碼2:

>>> id(a)
4364243328
>>> 
>>> id(b)
4364202696

哪些情況下is和==結(jié)果是完全相同的?

代碼3:

>>> a = 256
>>> b = 256
>>> a is b
True
>>> a == b
True
>>>
>>> a = 1000
>>> b = 10**3
>>> a == b
True
>>> a is b
False
>>>

結(jié)論:數(shù)字類型不完全相同。 

為什么256時相同, 而1000時不同?

因為出于對性能的考慮,Python內(nèi)部做了很多的優(yōu)化工作,對于整數(shù)對象,Python把一些頻繁使用的整數(shù)對象緩存起來,保存到一個叫small_ints的鏈表中,在Python的整個生命周期內(nèi),任何需要引用這些整數(shù)對象的地方,都不再重新創(chuàng)建新的對象,而是直接引用緩存中的對象。Python把這些可能頻繁使用的整數(shù)對象規(guī)定在范圍[-5, 256]之間的小對象放在small_ints中,但凡是需要用些小整數(shù)時,就從這里面取,不再去臨時創(chuàng)建新的對象。

代碼4:

>>> c = 'pythontab.com'
>>> d = 'pythontab.com'
>>> c is d
False
>>> c == d
True
>>> c = 'pythontabcom'
>>> d = 'pythontabcom'
>>> c is c
True
>>> c == d
True

結(jié)論:字符串類型不完全相同。這個和解釋器實現(xiàn)有關(guān)。

代碼5:

>>> a = (1,2,3) #a和b為元組類型
>>> b = (1,2,3)
>>> a is b
False
>>> a = [1,2,3] #a和b為list類型
>>> b = [1,2,3]
>>> a is b
False
>>> a = {'python':100,'com':1} #a和b為dict類型
>>> b = {'python':100,'com':1}
>>> a is b
False
>>> a = set([1,2,3])#a和b為set類型
>>> b = set([1,2,3])
>>> a is b
False

結(jié)論

當(dāng)變量是數(shù)字、字符串、元組,列表,字典時,is和==都不相同, 不能互換使用!當(dāng)比較值時,要使用==,比較是否是同一個內(nèi)存地址時應(yīng)該使用is。當(dāng)然,開發(fā)中比較值的情況比較多。

到此這篇關(guān)于一文搞懂Python中is和==的區(qū)別的文章就介紹到這了,更多相關(guān)Python中is和==的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Python實現(xiàn)模擬登錄知乎

    利用Python實現(xiàn)模擬登錄知乎

    這篇文章主要為大家介紹了如何利用Python實現(xiàn)模擬登陸知乎功能,文中的示例代碼講解詳細,對我們學(xué)習(xí)有一定幫助,需要的可以參考一下
    2022-05-05
  • 基于PyQt5實現(xiàn)的Windows定時關(guān)機工具

    基于PyQt5實現(xiàn)的Windows定時關(guān)機工具

    在日常使用電腦的過程中,我們經(jīng)常會遇到需要定時關(guān)機的場景,雖然 Windows 自帶 shutdown 命令可以定時關(guān)機,但操作方式較為繁瑣,缺乏可視化界面,因此,本篇文章將帶大家實現(xiàn)一個基于 PyQt5 的 Windows 定時關(guān)機工具,需要的朋友可以參考下
    2025-04-04
  • python實現(xiàn)數(shù)字炸彈游戲程序

    python實現(xiàn)數(shù)字炸彈游戲程序

    這篇文章主要為大家詳細介紹了python實現(xiàn)數(shù)字炸彈游戲程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Python socket套接字實現(xiàn)C/S模式遠程命令執(zhí)行功能案例

    Python socket套接字實現(xiàn)C/S模式遠程命令執(zhí)行功能案例

    這篇文章主要介紹了Python socket套接字實現(xiàn)C/S模式遠程命令執(zhí)行功能,涉及Python socket套接字編寫服務(wù)器/客戶機模式數(shù)據(jù)傳輸相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • 跟老齊學(xué)Python之私有函數(shù)和專有方法

    跟老齊學(xué)Python之私有函數(shù)和專有方法

    這篇文章是老齊學(xué)Python系列文章的一篇,主要介紹了跟私有函數(shù)和專有方法,需要的朋友可以參考下
    2014-10-10
  • pycharm必知的一些簡單設(shè)置方法

    pycharm必知的一些簡單設(shè)置方法

    這篇文章主要介紹了pycharm必知的一些簡單設(shè)置方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Python使用Streamlit打造高效的測試數(shù)據(jù)生成器

    Python使用Streamlit打造高效的測試數(shù)據(jù)生成器

    這篇文章主要為大家詳細介紹了如何利用 Python 的 Streamlit 和 Faker 庫,快速構(gòu)建一個簡單實用的測試數(shù)據(jù)生成器,幫助測試工程師一鍵生成高質(zhì)量的測試數(shù)據(jù),感興趣的可以了解下
    2025-04-04
  • python在linux中輸出帶顏色的文字的方法

    python在linux中輸出帶顏色的文字的方法

    這篇文章主要介紹了python在linux中輸出帶顏色的文字的方法,僅在Linux系統(tǒng)中有效果,一般輸出在控制臺中,本文用在日志環(huán)節(jié),方便測試,需要的朋友可以參考下
    2014-06-06
  • Python實現(xiàn)消消樂小游戲

    Python實現(xiàn)消消樂小游戲

    本文主要介紹了Python實現(xiàn)消消樂小游戲,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 用python寫個自動SSH登錄遠程服務(wù)器的小工具(實例)

    用python寫個自動SSH登錄遠程服務(wù)器的小工具(實例)

    下面小編就為大家?guī)硪黄胮ython寫個自動SSH登錄遠程服務(wù)器的小工具(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論