初始編碼和小資料池
一.初始編碼
ASCII 碼不支援中文 是py2版本中的預設編碼,一個位元組8位,美帝專用.
Unicode 萬國碼, 英文兩個位元組16位,中文四個位元組32位.
utf-8 英文最少使用八位(1位元組), 歐洲使用十六位(2位元組), 亞洲是二十四位(3位元組) #最常用的編碼方式
utf-16 最少使用十六位
gbk(國標)國家標準編碼方式 其中中文要用十六位(2位元組)表示,英文使用8位(1位元組)
8bit = 1 byte
1024byte = 1kb
1024kb = 1Mb
1024Mb = 1Gb
1024Gb = 1Tb
1024Tb = 1Pb
encode 編碼
decode 解碼
注意: 用什麼編就用什麼解
在python3的記憶體中. 在程式執行階段. 使用的是unicode編碼.
a = "天涯" a1 = a.encode("gbk") #編碼 print(a1) #b'\xcc\xec\xd1\xc4' bytes位元組 a2 = a1.decode("gbk") #解碼 print(a2) #天涯
# s= "alex" # print(s.encode("utf-8")) #b'alex' # print(s.encode("gbk")) #b'alex' a = "中國" print(a.encode("utf-8")) #b'\xe4\xb8\xad\xe5\x9b\xbd' print(a.encode("gbk")) #b'\xd6\xd0\xb9\xfa'
str是已經編好碼的字串,如Unicode,GB2312,ascii碼,可以表示不同語言中的字元,可以解碼成byte
byte是位元組,只能是ascii碼0-255的字元,表示未經編碼處理的原始字串.
bytes的表現形式:
1. 英文 b'alex' 英文的表現形式和字串沒什麼兩樣
2. 中文 b'\xe4\xb8\xad\xe5\x9b\xbd這是漢字的UTF-8的bytes表現形式(三個一箇中文字元)
二.小資料池:
小資料池,只針對,整數,字串,bool值
數字範圍-5 ~ 256
字串: 乘法總數長度不能超過20個,0和1除外
不能有特殊字元
字串小資料池的規則:
1.自己定義的且不含有特殊字元的字串沒有限制,有特殊字元的字串長度必須是為0或者1時,才能沒有限制
2. 沒有特殊字元的用乘法得到的字串時:
a.當乘數為 0或者1的時候,是,是可以使用小資料池的
b.當乘數大於1的時候,字串乘完以後的字串數量y 要小於等於20.
3.當含有特殊字元進行乘法運算時:
a.字串的長度要大於一
滿足以上的條件的資料才能使用小資料池.
三.is id ==
"id"查詢記憶體地址,“==”是比較的兩邊的數值是否相等,而”is”是比較的兩邊的記憶體地址是否相等。 如果記憶體地址相等,那麼這兩邊其實是指向同一個記憶體地址。is 需要以cmd視窗為主!
在執行一個程式碼塊內的命令時,python會先檢查這個值是不是已經存在,如果存在,則會直接呼叫這個存在的資料,這樣就會導致在一個程式碼塊中的兩個變數指向同一個記憶體地址.
在一個py檔案中只要頂行寫都是程式碼塊,同一個程式碼塊的記憶體地址是一個的。
總結: ‘ ==’ 是 比較 符號 兩邊表示式 的值是否相等,而 ‘is' 是比較兩邊的物件是否是同一個記憶體地址。如記憶體地址相等,那麼這兩邊指向同一個記憶體空間。
可以說,如果記憶體地址相同,那麼值一定相同; 值相同,記憶體地址不一定相同。.
a = 100
b = 100 這兩個是在一個程式碼塊中
#### Python 程式是由程式碼塊構造的,塊是一個python程式的文字,它是作為一個執行單元的。
程式碼塊:一個模組,一個函式,一個類,一個檔案等都是一個程式碼塊。