python2.7与python3的区别_Python 2.7 与Python3的区别
python 2.7
range()函數(shù):
for i in range(10):if i == 2:break
print i
python 3.2
循環(huán)中用下面語(yǔ)句代替range(10):
list(range(10))
具體來(lái)說(shuō),在3.2中,range生成了一個(gè)iterator,要轉(zhuǎn)換成list的類型。
print 這個(gè)大家都知道了 python3里print變成了函數(shù) 要用print('xx')的方式調(diào)用
下面說(shuō)最大的一個(gè)變化,str和bytes:
Python 3最重要的新特性大概要算是對(duì)文本和二進(jìn)制數(shù)據(jù)作了更為清晰的區(qū)分。文本總是Unicode,由str類型表示,二進(jìn)制數(shù)據(jù)則由bytes類型表示。Python 3不會(huì)以任意隱式的方式混用str和bytes,正是這使得兩者的區(qū)分特別清晰。你不能拼接字符串和字節(jié)包,也無(wú)法在字節(jié)包里搜索字符串(反之亦然),也不能將字符串傳入?yún)?shù)為字節(jié)包的函數(shù)(反之亦然)。這是件好事。
不管怎樣,字符串和字節(jié)包之間的界線是必然的,下面的圖解非常重要,務(wù)請(qǐng)牢記于心:
字符串可以編碼成字節(jié)包,而字節(jié)包可以解碼成字符串。
>>>'€20'.encode('utf-8')
b'\xe2\x82\xac20'>>> b'\xe2\x82\xac20'.decode('utf-8')
'€20'
這個(gè)問(wèn)題要這么來(lái)看:字符串是文本的抽象表示。字符串由字符組成,字符則是與任何特定二進(jìn)制表示無(wú)關(guān)的抽象實(shí)體。在操作字符串時(shí),我們生活在幸福的無(wú)知之中。我們可以對(duì)字符串進(jìn)行分割和分片,可以拼接和搜索字符串。我們并不關(guān)心它們內(nèi)部是怎么表示的,字符串里的每個(gè)字符要用幾個(gè)字節(jié)保存。只有在將字符串編碼成字節(jié)包(例如,為了在信道上發(fā)送它們)或從字節(jié)包解碼字符串(反向操作)時(shí),我們才會(huì)開(kāi)始關(guān)注這點(diǎn)。
傳入encode和decode的參數(shù)是編碼(或codec)。編碼是一種用二進(jìn)制數(shù)據(jù)表示抽象字符的方式。目前有很多種編碼。上面給出的UTF-8是其中一種,下面是另一種:
>>>'€20'.encode('iso-8859-15')
b'\xa420'
>>> b'\xa420'.decode('iso-8859-15')'€20'
編碼是這個(gè)轉(zhuǎn)換過(guò)程中至關(guān)重要的一部分。離了編碼,bytes對(duì)象b'\xa420'只是一堆比特位而已。編碼賦予其含義。采用不同的編碼,這堆比特位的含義就會(huì)大不同:
>>> b'\xa420'.decode('windows-1255')'?20'
循環(huán)對(duì)象:
python2.7中是next()方法 python3中是__next__()方法
總結(jié)
以上是生活随笔為你收集整理的python2.7与python3的区别_Python 2.7 与Python3的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: spring 循环依赖_简单说说 Spr
- 下一篇: java list 转数组_数组转Lis