py2 和py3區別
python2:
print() print 'abc'
range() xrange() 生成器
raw_input()
python3:
print('abc')
range()
input()
=、==、is
一個等號“=”是賦值,
兩個等號“==”是比較是否相等,
is是比較內存地址,id(內容)
例如:
li1 = [1,2,3] li2 = li1 li3 = li2 print(id(li1),id(li2))
結果輸出:
32015816 32015816
數字、字符串、小數據池
數字的範圍:-5 到 256
字符串:
1.不能有特殊字符
2. s*20還是同一個地址,s*21以後都是兩個地址
實例:
i1 = 6 i2 = 6 print(id(i1),id(i2)) i1 = 300 i2 = 300 print(id(i1),id(i2))
list、dict、tuple、set
l1 = [1,]
l2 = [1,]
print(l1 is l2)
輸出:False
s = 'wuli'
s1 = b'wuli'
print(s,type(s))
print(s1,type(s1))
輸出:
wuli <class 'str'>
b'wuli' <class 'bytes'>
s = '中國'
print(s,type(s))
輸出:
中國 <class 'str'>
s1 = b'中國'
print(s1,type(s1))
輸出:報錯信息
SyntaxError: bytes can only contain ASCII literal characters.
s1 = 'wuli' #encode 編碼,如何將str --> bytes, () s11 = s1.encode('utf-8') s11 = s1.encode('gbk') print(s11) s2 = '中國' s22 = s2.encode('utf-8') s22 = s2.encode('gbk') print(s22)
關於編碼
ascii A : 00000010 8位 一個字節 unicode A : 00000000 00000001 00000010 00000100 32位 四個字節 中:00000000 00000001 00000010 00000110 32位 四個字節 utf-8 A : 00100000 8位 一個字節 中 : 00000001 00000010 00000110 24位 三個字節 gbk A : 00000110 8位 一個字節 中 : 00000010 00000110 16位 兩個字節 1,各個編碼之間的二進制,是不能互相識別的,會產生亂碼。 2,文件的儲存,傳輸,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等) py3: str 在內存中是用unicode編碼。 bytes類型 對於英文: str :表現形式:s = 'wuli' 編碼方式: 010101010 unicode bytes :表現形式:s = b'wuli' 編碼方式: 000101010 utf-8 gbk。。。。 對於中文: str :表現形式:s = '中國' 編碼方式: 010101010 unicode bytes :表現形式:s = b'x\e91\e91\e01\e21\e31\e32' 編碼方式: 000101010 utf-8 gbk。。。。