1.python2的中文編碼問題
python2是用ASCII碼作為默認編碼校焦,因此在項目代碼中如果出現(xiàn)中文是會報錯
需要添加 #-- encoding:utf-8 -- 頭文件來解決中文亂碼問題
2.除法符號/的區(qū)別
Python3中/表示真除姓惑,%表示取余境肾,//表示地板除(結(jié)果取整)阎毅;
Python2中/表示根據(jù)除數(shù)被除數(shù)小數(shù)點位得到結(jié)果使套,//同樣表示地板除
統(tǒng)一一下:Python3中/表示真除麻养,%表示取余它褪,//結(jié)果取整;Python2中帶上小數(shù)點/表示真除陶贼,%表示取余啤贩,//結(jié)果取整
3.python2中range和xrange的異同
python3中的range()函數(shù)是生成一個數(shù)組
函數(shù)說明:range([start,] stop[, step]),根據(jù)start與stop指定的范圍以及step設(shè)定的步長拜秧,生成一個序列痹屹。
range示例:
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(1,5)
[1, 2, 3, 4]
>>> range(0,6,2)
[0, 2, 4]
python2中的xrange()和python3中的range()用法是完全相同的,所不同的是生成的不是一個數(shù)組枉氮,而是一個生成器志衍。
xrange示例:
>>> xrange(5)
xrange(5)
>>> list(xrange(5))
[0, 1, 2, 3, 4]
>>> xrange(1,5)
xrange(1, 5)
>>> list(xrange(1,5))
[1, 2, 3, 4]
>>> xrange(0,6,2)
xrange(0, 6, 2)
>>> list(xrange(0,6,2))
[0, 2, 4]
這兩個輸出的結(jié)果都是一樣的,實際上有很多不同聊替,range會直接生成一個list對象:
a = range(0,10)
print type(a)
print a
print a[0], a[1]
輸出結(jié)果:
<type 'list'>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
0 1
而xrange則不會直接生成一個list楼肪,而是每次調(diào)用返回其中的一個值:
a = xrange(0,10)
print type(a)
print a
print a[0], a[1]
輸出結(jié)果:
<type 'xrange'>
xrange(10)
0 1
所以xrange做循環(huán)的性能比range好,尤其是返回很大的時候惹悄,盡量用xrange吧春叫,除非你是要返回一個列表。
4.print的區(qū)別
print 在Python2中作為語句泣港,在Python3中作為函數(shù)
實例1:
print(''hello''):在Python2中(''hello'')是語句的一部分暂殖,是一個整體;在Python3中''hello''是作為一個參數(shù)出入到函數(shù)中当纱。
實例2:
print(''hello'', ''world''):在Python2中輸出一個元組呛每,在Python3中輸出兩個字符串默認中間用空格隔開。
注:在Python2.6+中導(dǎo)入future模塊中的print_fuction才能將print當(dāng)做函數(shù)使用坡氯。
5.字符串
Python2中字符串有兩個類型:unicode和str晨横,前者表示文本字符串洋腮,后者表示字節(jié)序列,兩者沒有明顯的界限手形,開發(fā)者也感覺很混亂啥供。
Python3中做了嚴格的區(qū)分,str表示字符串叁幢,byte表示字節(jié)序列滤灯,任何需要寫入文本或者網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)都只接收字節(jié)序列。
補充:encode()和decode()
decode 解碼曼玩,encode 編碼:字符串在Python內(nèi)部的表示是unicode編碼鳞骤,在做編碼轉(zhuǎn)換時,通常需要以unicode作為中間編碼黍判, 即先將其他編碼的字符串解碼(decode)成unicode豫尽,再從unicode編碼(encode)成另一種編碼。
實例:s='中文' 如果是在utf8的文件中顷帖,該字符串就是utf8編碼美旧,如果是在gb2312的文件中,則其編碼為gb2312贬墩。這種情況下榴嗅,要進行編碼轉(zhuǎn)換,都需要先用 decode方法將其轉(zhuǎn)換成unicode編碼陶舞,再使用encode方法將其轉(zhuǎn)換成其他編碼嗽测。