關於Python中小資料池的理解

2021-10-01 20:03:32 字數 2323 閱讀 1005

1、首先理解 is 和 == 的區別

python中的物件可以理解為包括以下幾個要素:id(身份標識)、type(資料型別)、value(資料值),is和==的區別就是 is 比較的是資料的id值,也就意味著只要 a is b == true 的話,a和b指向的是同乙個物件;==比較的是資料的value值。

2、**塊與**塊的快取機制

python的**是由塊構成的,每乙個類、函式、模組等都可以稱為**塊,此處需要注意:python互動模式的每一行均是乙個**塊。

python在執行同一**塊的初始化物件的命令時,會檢查其值是否已經存在,如果存在,會將其重用。也就是說遇到初始化物件的命令時,會將初始化的變數與值儲存在乙個字典中,遇到新的變數時,會去字典檢索,如果之前初始化過,那麼直接復用,注意:復用的物件在記憶體中只存在乙個,id值相同。**塊的快取機制適用範圍:int(float)、str、bool

3、小資料池

小資料池/駐留機制 是針對不同**塊之間的快取機制,有點類似於全域性的意思。

對於整數:python自動將 -5~256 的整數進行了快取,當你用這些資料的時候,並不會重新建立物件,而是使用已經建立好的快取物件。

對於字串:python會將一定規則的字串在字串駐留池中建立乙份,當字串賦值給變數時候,並不會重新建立物件。

4、注意

同一**塊下採用**塊的快取機制

不同**塊採用小資料池駐留機制

[python] 純文字檢視

複製** ?

12

3

4

5

6

7

a=888

b=888

print(id(a),id(b))# id值相同

print(aisb)# 結果為true

# 總計:此處使用**塊的快取機制

[python] 純文字檢視

複製** ?

0102

03

04

05

06

07

08

09

10

11

12

13

14

15

16

# 在互動模式下

in [1]: a=256

in [2]: b=256

in [3]: aisb

out[3]:true

in [4]: c=257

in [5]: d=257

in [6]: cisd

out[6]:false

# 總結:在互動模式下,每一行都是乙個**塊,所以使用小資料快取機制,整數的範圍是 -5~256,由上可知,257並不在快取池中

python小資料池

name jerry print id name is 是什麼?又是什麼?是比較的兩邊的數值是否相等,而 is 是比較的兩邊的記憶體位址是否相等。python程式是由 塊構造的。塊是乙個python程式的文字,他是作為乙個單元執行的。塊 乙個模組,乙個函式,乙個類,乙個檔案等都是乙個 塊。pytho...

python中的 小資料池 is 和

一種資料快取機制,也被稱為駐留機制 小資料池針對的是 整數 字元 布林值 其他的資料型別不存在駐留機制 在python中對 5 到256之間的整數會被駐留在記憶體中,將一定規則的字串快取.在使用的時候,記憶體中只會建立乙個該資料的物件.儲存在小資料池中.當使用的時候直接從小資料池中獲取物件的記憶體引...

Python細節 二 小資料池

python是由 塊構成的 塊,乙個模組.乙個函式,乙個類,乙個檔案,eval exec 執行的時候也是乙個 塊 1.記憶體位址 id 通過id 我們可以檢視到乙個變數表示的值在記憶體中的位址 a alex print id a 4541631158 和is 比較的是值 內容 true is比較的是...