1. 小整數(shù)對(duì)象池
整數(shù)在程序中的使用非常廣泛,Python為了優(yōu)化速度,使用了小整數(shù)對(duì)象池, 避免為整數(shù)頻繁申請(qǐng)和銷毀內(nèi)存空間。
Python 對(duì)小整數(shù)的定義是 [-5, 256] 這些整數(shù)對(duì)象是提前建立好的,不會(huì)被垃圾回收。在一個(gè) Python 的程序中,無(wú)論這個(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ì)象池。說(shuō)明:終端是每次執(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è)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

