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

Python‘==‘ 及 ‘is‘相關(guān)原理解析

 更新時(shí)間:2020年09月05日 09:07:25   作者:MHyourh  
這篇文章主要介紹了Python‘==‘ 及 ‘is‘相關(guān)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

'==' 比較的是兩個(gè)對象的值

'is' 比較的是兩個(gè)對象的內(nèi)存地址(id)

下面我們著重理解 'is'。對于這個(gè),我們需要知道:小整數(shù)對象池,大整數(shù)對象池,以及intern機(jī)制

小整數(shù)池:Python預(yù)先創(chuàng)建小整數(shù)緩存池—— [-5~256],無論創(chuàng)建多少個(gè)對象,都是指向同一個(gè)地址,這樣是為了避免小整數(shù)頻繁申請和釋放內(nèi)存。

>>> a=3
>>> b=3
>>> a is b
True
>>> 1+2 is 3
True

>>> a=1.0
>>> b=1.0
>>> a is b
False

大整數(shù)對象池:Python 提供了一個(gè)可擴(kuò)展的內(nèi)存空間,也叫通用整數(shù)對象池,誰需要用就給誰用,免去了申請內(nèi)存。這個(gè)空間是一個(gè)PyIntBlock結(jié)構(gòu),是用一個(gè)單向列表連接一串內(nèi)存(block),這個(gè)列表由 block_list 維護(hù),而每個(gè) block 維護(hù)一個(gè) 整數(shù)對象數(shù)組(Objects),用于存放被緩存的整數(shù)對象,即處于一個(gè)內(nèi)存(block)的大整數(shù)是同一個(gè)對象。

>>> def func():
... a=10.1
... b=10.1
... return a is b
...
>>> func()
True

a和b的賦值都是由同一個(gè)通用整數(shù)池項(xiàng)獲得的。

intern機(jī)制:Python的字符串類型中有一個(gè) interned,它是一個(gè)記錄字符串對象的字典,以此來保證這些字符串在內(nèi)存中的唯一,相同值的字符串會使用同一個(gè)對象。

但是,只對由字母、數(shù)字、下劃線組成的字符串做intern處理,而存在其他字符的字符串則不會。

>>> a='abc'
>>> b='abc'
>>> a is b
True

>>> a='ab c'
>>> b='ab c'
>>> a is b
False

此外,Python其他的數(shù)據(jù)類型如字典(dict)、列表(list)、集合(set)等,都是創(chuàng)建不同的對象

>>> a=[1,2,3]
>>> b=[1,2,3]
>>> a is b
False>>> a={'a':1}>>> b={'a':1}>>> a is bFalse>>>

補(bǔ)充一個(gè),下面這種情況是因?yàn)樯弦粋€(gè) [1,2,3]被回收了,在新建[4,5,6]時(shí)那片緩存又被用到了

>>> id([1,2,3]) == id([4,5,6])
True
>>> id([1,2,3])
36200264L
>>> id([4,5,6])
36200264L

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • next在python中返回迭代器的實(shí)例方法

    next在python中返回迭代器的實(shí)例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于next在python中返回迭代器的實(shí)例方法,有興趣的朋友們可以嘗試下。
    2020-12-12
  • PyCharm中安裝PIL/Pillow的方法

    PyCharm中安裝PIL/Pillow的方法

    這篇文章主要介紹了PyCharm中PIL/Pillow的安裝,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • python爬蟲http代理使用方法

    python爬蟲http代理使用方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python爬蟲http代理使用方法相關(guān)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2021-09-09
  • python實(shí)現(xiàn)停車管理系統(tǒng)

    python實(shí)現(xiàn)停車管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)停車管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Python常見錯(cuò)誤:IndexError:?list?index?out?of?range解決

    Python常見錯(cuò)誤:IndexError:?list?index?out?of?range解決

    最近在寫一個(gè)爬蟲程序,但是卻出現(xiàn)了錯(cuò)誤提示IndexError:?list?index?out?of?range,所以下面這篇文章主要給大家介紹了關(guān)于Python常見錯(cuò)誤:IndexError:?list?index?out?of?range的解決方法,需要的朋友可以參考下
    2023-01-01
  • Django教程筆記之中間件middleware詳解

    Django教程筆記之中間件middleware詳解

    Django 中的中間件(middleware),是一個(gè)鑲嵌到Django的request/response處理機(jī)制中的一個(gè)hooks框架,是一個(gè)修改django全局輸入輸出的一個(gè)底層插件系統(tǒng)。這篇文章主要給大家介紹了關(guān)于Django教程筆記之中間件middleware的相關(guān)資料,需要的朋友可以參考下
    2018-08-08
  • Python中zip()函數(shù)的使用方法詳解

    Python中zip()函數(shù)的使用方法詳解

    在Python中,zip()函數(shù)是一個(gè)非常實(shí)用且強(qiáng)大的內(nèi)置函數(shù),它主要用于將多個(gè)迭代器(如列表、元組、字符串等)中的元素“打包”成一個(gè)個(gè)元組,并返回一個(gè)迭代器,下面,我將詳細(xì)探討zip()函數(shù)的使用方法,需要的朋友可以參考下
    2024-09-09
  • Python實(shí)現(xiàn)讀取mat、tif和hdr格式數(shù)據(jù)

    Python實(shí)現(xiàn)讀取mat、tif和hdr格式數(shù)據(jù)

    遙感影像數(shù)據(jù)大多以tif格式或者以hdr格式進(jìn)行存儲,如果以mat格式進(jìn)行存儲,不會保留坐標(biāo)信息,本文將詳細(xì)介紹如何使用python來讀取這三種格式的數(shù)據(jù),需要的可以參考下
    2023-12-12
  • Python標(biāo)準(zhǔn)庫os常用函數(shù)和屬性詳解

    Python標(biāo)準(zhǔn)庫os常用函數(shù)和屬性詳解

    os模塊是Python標(biāo)準(zhǔn)庫中的一個(gè)用于訪問操作系統(tǒng)相關(guān)功能的模塊,os模塊提供了一種可移植的使用操作系統(tǒng)功能的方法,本文給大家介紹下?OS標(biāo)準(zhǔn)庫常用函數(shù)和屬性,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • python調(diào)用系統(tǒng)中應(yīng)用程序的函數(shù)示例

    python調(diào)用系統(tǒng)中應(yīng)用程序的函數(shù)示例

    這篇文章主要為大家介紹了python調(diào)用系統(tǒng)中應(yīng)用程序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評論