小學生都能學會的python(小數據池)
阿新 • • 發佈:2018-09-18
32bit class 當我 文字 asc import 是不是 內容 內存地址
代碼塊的關系:如果在同一個代碼塊中。默認的整數和字符串還有布爾值都會進行緩存. 如果涉及計算。尊崇上面的規則
如果跨代碼塊,按照上面的規則執行的
小學生都能學會的python(小數據池)
1. 小數據池.
目的:緩存我們字符串,整數,布爾值。在使用的時候不需要創建過多的對象
緩存:int, str, bool、
int: 緩存範圍 -5~256
str:
1. 長度小於等於1,直接緩存
2. 長度大於1. 字符串中如果只有數字, 字母, 下劃線。 就會緩存
3. 乘以1。 同上, 乘以大於1的數。僅包含數字,字母下劃線。最終長度小於20會緩存
4. 使用sys模塊中的intern()緩存字符串
代碼塊的關系:如果在同一個代碼塊中。默認的整數和字符串還有布爾值都會進行緩存. 如果涉及計算。尊崇上面的規則
如果跨代碼塊,按照上面的規則執行的
# a = [1,2,2,13,123,123,12,3,12,3,12,312,3,12,32,13,12,3,21] # b = a # 明天深淺拷貝 # 內存地址 id() # print(id(a)) # print(id(b)) # a = 1000 # print(id(a)) # 內存的開辟是由解釋器來完成的. # 雙胞胎 # == 比較的是值(內容) True # is 比較的是內存地址(是不是同一個對象) False # lst1 = [1,2,3] # lst2 = [1,2,3] # print(lst1 == lst2) # 長得一樣 # print(lst1 is lst2) # 不是同一個對象 # a = "alex" # b = "alex" # print(a == b) # print(a is b) 在python中, 默認會把數字, 字符串, 布爾值進行緩存 # 1.當我們在控制臺的時候, 代碼塊與代碼塊之間的規則: # 1. 數字: -5 ~ 256之間的整數會被緩存 # 2. 字符串: # 長度小於等於1 會默認緩存 # 長度大於1 如果字符串中只有數字, 字母下換線緩存 # 乘法得到的字符串: # 1. 如果乘數是1. 和上面兩個方案一致 # 2. 乘數不是1. 最終長度不能超過20 # 手動指定緩存 from sys import intern intern()制定緩存的內容 # 3. 布爾值 # 2. py文件裏. 一個代碼塊內部. 只會緩存int, str, bool 也有自己的小數據池。 緩存的範圍會比外面的代碼塊的數據池要大 # 1. 數字。都會緩存。 運算的結果不緩存(-5~256 會緩存) # 2. 字符串。 默認的字符串都緩存. 如果有乘法。 遵循上方的結論 # 3. 布爾值。 默認緩存 a = "[email protected]" # 5 b = "[email protected]" # 1
2. is和==的區別
is比較的是內存地址
==比較的是值
3. decode和encode
python3內存中使用的是unicode。
unicode => utf-8 encode("utf-8")
utf-8 => unicode decode("utf-8")
utf-8和gbk不能直接轉換
bytes是字符串的另一種表示形式
再談編碼
‘‘‘ 1. ASCII: 8bit 1byte 英文字母 數字 特殊字符. 2. GBK: 16bit 2byte 主要是存中文。日文, 韓文, 繁字體。 中文的特殊字符 中國 (abcd) 3. UNICODE: 32bit 4byte 4. UTF-8: 可變長度的unicode 英文: 8bit, 1byte 歐洲文字:16bit, 2byte 中文: 24bit, 3byte (abcd) GBK和UTF-8不能直接互換 轉碼 ‘‘‘ # 在python2裏面. 默認的編碼是ASCII # 在python3中unicode是可以使用的。 默認用的就是Unicode. 代碼用utf-8來存儲 # 如果用unicode存儲, 如果用utf-8 # s = "你好啊" # 看到的就是unicode # print(s) # 1. 編碼. 把unicode轉換成utf-8 # s = "劉偉很皮" # 12個字節 # abc = s.encode("UTF-8") # encode之後的結果是bytes類型 依然是原來的字符串 # print(abc) # b‘數據‘ # 解碼 # abc = b‘\xe5\x88\x98\xe4\xbc\x9f\xe5\xbe\x88\xe7\x9a\xaf‘ # s = abc.decode("UTF-8") # 解碼。 用什麽編碼, 就用什麽解碼 # print(s) # s = "趙瑞鑫" # print(s.encode("GBK")) # bs = b‘\xd5\xd4\xc8\xf0\xf6\xce‘ # print(bs.decode("GBK")) # GBK的編碼不能用UTF-8解碼 # GBK的編碼. 把這句話變成UTF-8 # bs = b‘\xd5\xd4\xc8\xf0\xf6\xce‘ # # 先解碼 # s = bs.decode("GBK") # # 重新編碼 # bs2 = s.encode("UTF-8") # print(bs2)
小學生都能學會的python(小數據池)