一,python2與python3的區別
1)python2可以不用括號()
python3必須加括號
2)python2中有range()有序列表,xrange()生成器
python3中只有range()
3)python2中輸入是raw_input()
python3中輸入是input()
二, = == is 三者的區別
1) = 是賦值
== 是比較,值是否相等
is 比較的是記憶體位址
id(內容) 列印的是內容的id print(id1(內容),id2(內容))
is 與 == 區別:
is 用於判斷兩個變數引用物件是否為同乙個, == 用於判斷引用變數的值是否相等。
三,小資料池
小資料池是int和str在一定範圍內共用乙個資料池,範圍-1— -256。小資料池是為了節省記憶體。
1)str:不含有特殊字元的共用
ps: s1 = 『alex』
s2 = 'alex'
print(s1 is s2)
結果是true
2)str: 『乙個字元』*小於等於20的數字,還是共用,如果是大於20的就不共用了。
多個字元不論乘什麼數字,都不共用
3)剩下的list dict taple set等都沒有小資料池概念
四,編碼
ascii碼: 只有英文本母和特殊字元,乙個位元組是8位
unicode碼: 乙個字元是32位,乙個字母4個位元組
乙個漢字是32位,乙個漢字4個位元組
utf-8: 乙個字母是8位,乙個字母1個位元組
乙個漢字是24位,乙個漢字3個位元組
gbk; 乙個字母是8位,乙個字母1個位元組
乙個漢字是16位,乙個漢字2個位元組
1)各個編碼之間的二進位制不能互相識別,會亂碼。
uncode占得記憶體太多,所以不能傳輸和儲存。
utf-8,gbk,utf-16,utf-32,gb2312,ascii等都可以儲存和傳輸。
2)python3在記憶體中是用unicode編碼方式儲存的,所以不能直接儲存和傳輸,要轉化為其他編碼進行儲存和傳輸。
五,bytes型別
bytes型別也是一種資料型別。
bytes不是用unicode方式編碼的,所以可以儲存和傳輸。
bytes的編碼方式是utf-8,gbk,ascii,gb2312等。
1)英文
在python3中:str表現形式; s = ''alex'' str編碼形式:unicode
在bytes中: str表現形式: s = b''alex'' str編碼形式:utf-8,gbk,ascii,gb2312等
中文在python3中:str表現形式; s = ''中國'' str編碼形式:unicode
在bytes中: str表現形式: s = b''x\e91\e91e91\e91e91\e91 str編碼形式:utf-8,gbk,ascii,gb2312等
六,編碼 encode
1)將str>>>bytes 可以指定編碼方式
s1 = 『alex』
s11 = s1.encode('utf-8')
print(s11)
表面是將str轉化為bytes,實際內部是將unicode轉化為utf-8,gbk,ascii,gb2312等
python3編碼宣告 python3編碼問題彙總
這兩天寫了個監測網頁的爬蟲,作用是跟蹤乙個網頁的變化,但執行了一晚出現了乙個問題。希望大家不吝賜教!我用的是python3,錯誤在對html response的decode時丟擲,原樣為 response urllib.urlopen dsturl content response.read dec...
python3編碼解碼
輸入編碼 輸入編碼需要由二進位制轉為unicode,輸入介質 原始碼檔案 終端 檔案 網路等 python3預設是使用utf 8編碼對輸入的二進位制值轉為unicode。也就是說如果輸入介質沒有指定編碼,python3直譯器就預設把你的原始檔看成是utf 8編碼。呼叫sys.getdefaulten...
Python3編碼問題
python3最重要的進步之一就是解決了python2中字串與字元編碼的問題。python2字串的缺陷如下 而python3則把系統預設編碼設定為了 utf 8 import sys sys.getdefaultencoding utf 8 之後,文字字元和二進位制資料分別用str和bytes表示。...