對(duì)Python中小整數(shù)對(duì)象池和大整數(shù)對(duì)象池的使用詳解
1. 小整數(shù)對(duì)象池
整數(shù)在程序中的使用非常廣泛,Python為了優(yōu)化速度,使用了小整數(shù)對(duì)象池, 避免為整數(shù)頻繁申請(qǐng)和銷毀內(nèi)存空間。
Python 對(duì)小整數(shù)的定義是 [-5, 256] 這些整數(shù)對(duì)象是提前建立好的,不會(huì)被垃圾回收。在一個(gè) Python 的程序中,無論這個(gè)整數(shù)處于LEGB中的哪個(gè)位置,
所有位于這個(gè)范圍內(nèi)的整數(shù)使用的都是同一個(gè)對(duì)象。同理,單個(gè)字母也是這樣的。
In [1]: a=-5 In [2]: b=-5 In [3]: a is b Out[3]: True In [4]: a=256 In [5]: b=256 In [6]: a is b Out[6]: True In [7]: a=1000 In [8]: b=1000 In [9]: a is b Out[9]: False intern機(jī)制處理空格一個(gè)單詞的復(fù)用機(jī)會(huì)大,所以創(chuàng)建一次,有空格創(chuàng)建多次,但是字符串長(zhǎng)度大于20,就不是創(chuàng)建一次了。 In [13]: a="abc" In [14]: b="abc" In [15]: a is b Out[15]: True In [16]: a="helloworld" In [17]: b="helloworld" In [18]: a is b Out[18]: True In [19]: a="hello world" In [20]: b="hello world" In [21]: a is b Out[21]: False s1 = "abcd" s2 = "abcd" print(s1 is s2) s1 = "a" * 20 s2 = "a" * 20 print(s1 is s2) s1 = "a" * 21 s2 = "a" * 21 print(s1 is s2) s1 = "ab" * 10 s2 = "ab" * 10 print(s1 is s2) s1 = "ab" * 11 s2 = "ab" * 11 print(s1 is s2) # True # True # False # True # False
2.大整數(shù)對(duì)象池。說明:終端是每次執(zhí)行一次,所以每次的大整數(shù)都重新創(chuàng)建,而在pycharm中,每次運(yùn)行是所有代碼都加載都內(nèi)存中,屬于一個(gè)整體,所以
這個(gè)時(shí)候會(huì)有一個(gè)大整數(shù)對(duì)象池,即處于一個(gè)代碼塊的大整數(shù)是同一個(gè)對(duì)象。c1 和d1 處于一個(gè)代碼塊,而c1.b和c2.b分別有自己的代碼塊,所以不相等。
C1.b is C2.b In [22]: a=1000 In [23]: b=1000 In [24]: a is b Out[24]: False In [25]: a=-1888 In [26]: b=-1888 In [27]: a is b Out[27]: False In [28]: c1 = 1000 d1 = 1000 print(c1 is d1) # True class C1(object): a = 100 b = 100 c = 1000 d = 1000 class C2(object): a = 100 b = 1000 print(C1.a is C1.b) # True print(C1.a is C2.a) # True print(C1.c is C1.d) # True print(C1.b is C2.b) # False
以上這篇對(duì)Python中小整數(shù)對(duì)象池和大整數(shù)對(duì)象池的使用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用scrapy爬取陽光熱線問政平臺(tái)過程解析
這篇文章主要介紹了Python使用scrapy爬取陽光熱線問政平臺(tái)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08一種Python工具的License授權(quán)機(jī)制詳解
這篇文章主要介紹了一種Python工具的License授權(quán)機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06Python實(shí)現(xiàn)從log日志中提取ip的方法【正則提取】
這篇文章主要介紹了Python實(shí)現(xiàn)從log日志中提取ip的方法,涉及Python文件讀取、數(shù)據(jù)遍歷、正則匹配等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03Python基于Django實(shí)現(xiàn)驗(yàn)證碼登錄功能
驗(yàn)證碼登錄是一種常見的身份驗(yàn)證方式,它可以有效防止惡意攻擊和機(jī)器人登錄,本文將介紹如何基于Python?Django實(shí)現(xiàn)驗(yàn)證碼登錄功能,需要的可以參考一下2023-05-05基于python和flask實(shí)現(xiàn)http接口過程解析
這篇文章主要介紹了基于python和flask實(shí)現(xiàn)http接口過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06python 實(shí)現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url
今天小編就為大家分享一篇python 實(shí)現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python基礎(chǔ)類繼承重寫實(shí)現(xiàn)原理解析
這篇文章主要介紹了Python基礎(chǔ)類繼承重寫實(shí)現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04