python3.8怎么使用 如何快速判斷一個(gè)python代碼是python 3x版本?
如何快速判斷一個(gè)python代碼是python 3x版本?python2和python3的區(qū)別:python2的print是直接輸入就是可以輸出python3的print要在外面加()(要在外面加括號(hào)
如何快速判斷一個(gè)python代碼是python 3x版本?
python2和python3的區(qū)別:
python2的print是直接輸入就是可以輸出
python3的print要在外面加()(要在外面加括號(hào)輸出)
python2中的input在鍵入數(shù)字時(shí)是int類型
python3中的input在然后輸入數(shù)字時(shí)不加那就證明是str類型
Python 2和Python 3有哪些主要區(qū)別?
語法
print繼續(xù)是語句,而是函數(shù),例如以前是printabc現(xiàn)在是print(abc)
但是python2.6可以不使用aroundfutureimportprint_function來實(shí)現(xiàn)方法完全相同功能在Python3中,沒有略顯陳舊類,只能最新式類,也就是說不需要再像這樣pagestateFoobar(object):sigh顯式地子類化object原先1/2(兩個(gè)整數(shù)乘積)結(jié)果是0,現(xiàn)在是0.5了#python2gtgtgt1/20
#python3gtgtgt1/20.5
十分的寫法決定:原先的except Exception,e變得except(Exception)likee編碼
Python2的默認(rèn)編碼是asscii,這也導(dǎo)致Python2中每天都碰到編碼問題的原因之一,況且是為么會(huì)在用asscii才是默認(rèn)編碼,原因本質(zhì)Python這門語言誕生的時(shí)候還沒直接出現(xiàn)Unicode。Python3設(shè)置成常規(guī)了UTF-8以及默認(rèn)編碼,因此你不再需要在文件頂部寫#codingutf-8了。
#python2gtgtgtprint()ascii#python3gtgtgtprint(())utf-8
字符串
字符串是最大的變化之一,這個(gè)變化令編碼問題降到了最底可能。在Python2中,字符串有兩個(gè)類型,一個(gè)是unicode,一個(gè)是str,前者意思是文本字符串,后者意思是字節(jié)序列,當(dāng)然了兩者完全沒有的確的界限,開發(fā)者也覺得很動(dòng)蕩,不清楚編碼出現(xiàn)了錯(cuò)誤的原因,但在Python3中兩者做了嚴(yán)不區(qū)分,各用str它表示字符串,unsigned表示字節(jié)序列,任何是需要讀取文本的或數(shù)據(jù)的傳輸?shù)臄?shù)據(jù)都只可以接收字節(jié)序列,這就從源頭上阻住了編碼出錯(cuò)的問題。
gtgtgts中文gtgtgts中文gtgtgttype(s)ltclassstrgt#上面的str類型對(duì)象實(shí)際上超過py2的unicodes.encode(utf-8)bxe4xb8xadxe6x96x87#str對(duì)象encodeutf-8后,變得byte對(duì)象,所以byte對(duì)象變成了py2的str對(duì)象
所以我:
py2-a8unicode-a8被py3的str對(duì)象能用py2-a8str-rlm被py3的bytes對(duì)象能用py2與py3字符串差異比較好
迭代器
在Python2中很多回列表對(duì)象的內(nèi)置函數(shù)和方法在Python3都改了返回像迭代器的對(duì)象,畢竟迭代器的惰性加載特性以至于操作大數(shù)據(jù)更有效率。Python2中的range和xrange函數(shù)擴(kuò)展成了range,假如同樣的兼容性問題2和3,可以這樣的話:
try:rangexrangeexcept:sigh
至于,字典對(duì)象的()、()方法都繼續(xù)直接返回列表,完全是以一個(gè)類似于迭代器的view對(duì)象直接返回。低階函數(shù)map、filter、zip直接返回的也都不是列表對(duì)象了。Python2的迭代器必須實(shí)現(xiàn)next方法,而Python3可以改成了next。
map方法回了迭代器而繼續(xù)是列表
#py2#真接返回列表gtgtgtmap(lambdax:x*x,range(1,3))[1,4]#py3#回迭代器gtgtgtmap(lambdax:x*x,range(1,3))ltmapobjectat0x7f45371e5c18rlm#必須遍歷才能讀取,這樣是對(duì)大數(shù)據(jù)會(huì)更高效率gtgtgtmap_datamap(lambdax:x*x,range(1,3))gtgtgtofmintomap_(m)...14
asyncio同步異步IO模型
asyncio是Python3.4版本化入的標(biāo)準(zhǔn)庫,再內(nèi)置藍(lán)牙了對(duì)異步IO的支持。
asyncio的編程模型那是一個(gè)消息循環(huán)。我們從asyncio模塊中就某些一個(gè)EventLoop的語句,然后把把不需要負(fù)責(zé)執(zhí)行的協(xié)程扔到EventLoop中不能執(zhí)行,就基于了同步異步IO。