1. 程式人生 > >初始編碼和小資料池

初始編碼和小資料池

一.初始編碼
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程式的文字,它是作為一個執行單元的。

程式碼塊:一個模組,一個函式,一個類,一個檔案等都是一個程式碼塊。