一. 小資料池
**塊:python程式是有**塊構成的,乙個**塊的文字作為python程式的執行單元.
乙個模組,乙個函式,乙個類,甚至每乙個command命令都是乙個**塊,乙個檔案也是乙個**塊.
eval()和exec()執行的時候也是乙個**塊
命令列:我們在控制台cmd中輸入的python進入的就是python的command模式,在這裡也可以寫python程式
二. 小資料池is和==的區別
1. id()
通過id()我們可以檢視到乙個變數表示的值在記憶體中的位址
2. is 和 ==
== 判斷左右兩端的值是否相等
is 判斷左右兩端的=記憶體位址值是否一致,如果返回true,那可以確定這兩個變數使用的是同乙個物件
3. 小資料池
一種資料快取機制,也被成為駐留機制
小資料池只針對:整數,字串,布林值. 其他的資料型別不存在駐留機制
優點:能夠提高一些字串,整數的處理速度,省略了建立物件的過程
缺點:在"池"中建立或者插入新的內容會花費更多的時間
對於數字: -5~256是會被加到⼩小資料池中的. 每次使⽤用都是同⼀乙個物件.
對於字串串:
1. 如果字串串的⻓長度是0或者1, 都會預設進⾏行行快取
2. 字串串⻓長度⼤大於1, 但是字串串中只包含字⺟母, 數字, 下劃線時才會快取
3. ⽤用乘法的到的字串串. ①. 乘數為1, 僅包含數字, 字⺟母, 下劃線時會被快取. 如果
包含其他字元, ⽽而⻓長度<=1 也會被駐存, ②. 乘數⼤大於1 . 僅包含數字, 字⺟母, 下劃 線這個時候會被快取. 但字串串⻓長度不能⼤大於20
4. 指定駐留留. 我們可以通過sys模組中的intern()函式來指定要駐留留的內容.
三. 編碼補充
1.python2使用的是ascii碼表,python3使用的是unicode碼表
在儲存和傳輸時不能直接用unicode,因為太浪費記憶體,所以必須對字串進行編碼,轉換成bytes型別
2.bytes的表現形式
ascii碼表的內容(英文,數字,特殊字元):原樣輸出,表現形式和字串沒區別
非ascii碼表的內容(中文): b'\xe6\x88\x91\xe4 這是兩個漢字的utf-8的bytes表現形式
gbk或utf-8 --> unicode 用decode()解碼
unicode --> gbk或utf-8 用encode()編碼
gbk和utf-8不能相互直接轉換,需要unicode來充當中間媒介
小資料池和編碼
1.小資料池.目的 快取我們的字串,整數,布林值.在使用的時候不需要建立過多的物件 快取 int str bool int 範圍 5 256 str 1.長度小於等於1,直接快取 2.長度大於1.字串中如果只有數字,字母,下劃線.就會快取 3.乘以1.同上,乘以大於1的數,僅包含數字,字母下劃線.最...
小資料池 編碼補充
1 is id id查詢記憶體位址 is判斷的是記憶體位址 2 小資料池 python int str 有小資料池,為了節省記憶體,其他的資料型別沒有小資料池 int範圍 5到256 str如果全部由字母組成的字串,都是指向乙個記憶體位址 如果是str 單個字母 與數字相乘,則數字是20以內 包含2...
Python的小資料池和編碼解碼
塊 乙個模組,乙個函式,乙個類,甚至每乙個command命令都是乙個 塊.乙個檔案也是乙個 塊.而不需要建立乙個新的資料.這樣會節省更多的記憶體區域.在cmd命令列執行python時,每一條 就是乙個 塊 在pycharm中執行檔案時,每乙個.py檔案就是乙個 塊.is 判斷的是兩者的記憶體位址是否...