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=li1print(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)) #中國
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' #兩個字節表示一個中文