python5
python2&python3
1.python2中print可加括號可不加括號,python3中print一定要加括號。
2.python2中有range(),也有xrange(),python中只有range()。生成器。
3.Python2中raw_input(),python3中input()。
=,==,is
=賦值
==比較是否相等
is 比較記憶體地址,id(內容)
li1=[1,2,3] li2=li1 print(id(li1),id(li2))#2131068415112 2131068415112 #一般賦值運算記憶體地址是一樣的 i1=6 i2=6 print(id(i1),id(i2))#1632326608 1632326608地址一樣 i1=300 i2=300 print(id(i1),id(i2))#2749778251664 2749783362800地址不一樣(cmd裡運算) #數字,字串的小資料池 數字範圍-5,-256 字串:1.不能有特殊字元 2.s*20同一個地址,s*21以上兩個地址
編碼方式:
ascii: A:00000010 8位 一個位元組
unicode: A:00000000 00000001 00000010 00000100 32位 四個位元組
中:00000000 00000001 00000010 000001100 32位 四個位元組
utf-8: A: 01000000 8位 一個位元組
中:00001000 00000001 00000010 24位 三個位元組
gbk: A: 00001000 8位 一個位元組
中:00000010 00000001 16位 兩個位元組
1.各個編碼之間的二進位制是不能互相識別的,會產生亂碼。
2.檔案的儲存和傳輸不能是Unicode,只能是utf-8,jbk,gb2312,ascii等
python3中:
str在記憶體中是用Unicode編碼.(所以在檔案儲存和傳輸時要轉化)先轉化為bytes進行儲存和傳輸。
bytes型別(資料型別的一種,跟str很像,只是編碼方式不同,它用utf-8,gbk,gb2312編碼)
對於英文:
str:表現形式:s="bree"
編碼方式:00000010 Unicode
bytes:表現形式:s=b"bree"
編碼方式:00000010 utf-8,gbk...
對於中文:
str:表現形式:s="中國e"
編碼方式:00000010 Unicode
bytes:表現形式:s=b"x\e91\e91\e01\e11\e31\e22" (三個位元組對應一箇中文則用的是utf-8,若兩個位元組對應一箇中文則用的是jbk)
編碼方式:00000010 utf-8,gbk...
s="中國" print(s,type(s))#中國 <class 'str'> s1=b"中國" print(s1,type(s1)) #報錯 #encode 編碼,如何將表現形式str 轉化成bytes,將編碼方式Unicode轉化位utf-8或gbk s1="bree" s11=s1.encode("utf-8") print(s11)#b'bree' s2="中國" s22=s2.encode("utf-8") print(s22)#b'\xe4\xb8\xad\xe5\x9b\xbd'#三個位元組表示一箇中文 s3="中國" s33=s3.encode("gbk") print(s33)#b'\xd6\xd0\xb9\xfa'#兩個位元組表示一箇中文