在python中代碼塊指的是python
一個模塊,一個函數,一個類,一個文件等都是代碼塊緩存
而在用戶交互裏面,就是cmd中進入python解釋器例,每一行代碼就是一個代碼塊.網絡
is 是比較的兩邊的內存地址是否相等函數
比較倆邊的數值是否相等性能
指內存地址,利用id()內置函數去查詢一個數據的內存地址優化
是python對內存作的一個優化,對一些經常使用的數字(整數-5~256),必定規律的字符串提早建立一個小數據池(容器),編碼
優勢:節省內存,在內存級別提升性能與效率,經常使用的字符串能夠直接從小數據池中提用spa
缺點:在「池」中建立或插入字符串,整數時,會「相對」花費更多的時間code
int:對象
在小數據池中保存的有(-5~256)之間的整數,即之間從小數據池中調用
str:
1.對於字符串是ASCII碼中的,默認採用小數據池(駐留機制)
注意:字符串的內容不包括中文,字符串中含有特殊字符的話長度(字符串的長度)只能是1纔是True,
2.對於乘法,若是a = "afhjdhsaflh***" b = a *1 print(a is b) 輸出都是True,即都默認採用駐留機制
若是是乘於2以上的 即a = "aslfj"*4 b = "aslfj"*4 總長度必須在20之內纔是默認採用駐留機制
指定駐留
from sys import intern a = intern('hello!@'*20) b = intern('hello!@'*20) print(a is b) #指定駐留是你能夠指定任意的字符串加入到小數據池中,讓其只在內存中建立一個對象,多個變量都是指向這一個字符串。
bool
布爾值始終保存在小數據池內
不一樣編碼直接不能夠直接識別,都是進過轉化才能夠識別的
網絡傳輸和存儲:因爲Unicode太佔用內存,因此必須以非Unicode的編碼進行網絡傳輸或者存儲
在大環境python3x中
str:字符串的編碼是Unicode
其他都是utf-8
因此引入了bytes的數據類型概念
ytes類型和字符串類型是相似關係,字符串類型的內置函數在bytes類型均可以使用。
而區別是bytes類型沒辦法以b'中文字符串'的類型存儲中文數據,只有字符串能夠,而且bytes類型的內存編碼方式不是Unicode,因此當字符串須要進行網絡傳輸和存儲時必須進行編碼,就是把Unicode->其餘編碼方式進行操做。 編碼及解碼: str->bytes encode 編碼 bytes->str decode 解碼