Python進階(七)-淺談Python3和Python2的區(qū)別
#Python進階(七)-淺談python3和Python2的區(qū)別
不管使用何種版本的Python語言,都需要遵循編程規(guī)范,不該有的縮進一定不能有。否則會出現(xiàn)莫名其妙的錯誤,如下圖所示:
在應用Python編程時,首先要明確所使用Python版本,因為版本2與3之間存在著很多細節(jié)性的差異。稍有不慎就會入坑~下面介紹一下具體應用中的細節(jié)性差異。
具體參照:https://docs.python.org/3/whatsnew/3.0.html
##print函數(shù)
Python3中print為一個函數(shù),必須用括號括起來;Python2中print為class)。Python 2 的 print 聲明已經被 print() 函數(shù)取代了,這意味著我們必須包裝我們想打印在小括號中的對象。
###舉例
在Python 2中:
print 'Hello, World!'
1
在Python 3中:
print( 'Hello, World!')
1
##reduce()函數(shù)
在Python 3里,reduce()函數(shù)已經被從全局名字空間里移除了,它現(xiàn)在被放置在fucntools模塊里。使用時要先引入from functools import reduce
##try except
try:
except Exception, e :
try: except Exception as e :
1
2
##打開文件
原: file( … )
或 open(…)
改為:
只能用 open(…)
##從鍵盤錄入一個字符串
原: raw_input( “提示信息” )
改為: input( “提示信息” )
##整形除法自動轉為float
python2:
1/2
2/2
1//2
0
1
0
python3:
1/2
2/2
1//2
0.5
1.0
0
##新的字符串格式化方法format取代%5.
##xrange重命名為range.
##!=取代 < >
##long重命名為int.
##exec變成函數(shù)
##Py3.X源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的:
>>> 中國 = 'china' >>>print(中國) china
1
2
3
python3中替換python2中cmp函數(shù)
Python 3.4.3 的版本中已經沒有cmp函數(shù),被operator模塊代替,在交互模式下使用時,需要導入模塊。在沒有導入模塊情況下,會出現(xiàn)下面的錯誤:
提示找不到cmp函數(shù)了,那么在python3中該如何使用這個函數(shù)呢?
所以要導入模塊
看下面給的內置函數(shù)
operator.lt(a, b) #相當于 a=b operator.gt(a, b) #相當于a>b operator.__lt__(a, b) operator.__le__(a, b) operator.__eq__(a, b) operator.__ne__(a, b) operator.__ge__(a, b) operator.__gt__(a, b)
1
2
3
4
5
6
7
8
9
10
11
12
這幾個函數(shù)就是用來替換之前的cmp,函數(shù)的返回值是布爾值。
##除法
在python3.0中,/ 現(xiàn)在總是執(zhí)行真除法,不管操作數(shù)的類型,都會返回包含任何余數(shù)的一個浮點結果。// 執(zhí)行Floor除法,它截除掉余數(shù)并且針對整數(shù)操作數(shù)返回一個整數(shù),如果有任何一個操作數(shù)是浮點數(shù)類型,則返回一個浮點數(shù)。
在python2.6中,/ 表示傳統(tǒng)除法,如果兩個操作數(shù)都是整數(shù)的話,執(zhí)行截斷的整數(shù)除法(好像是Floor除法????);否則,執(zhí)行浮點除法(保留余數(shù),好像是真除法?)。//執(zhí)行Floor除法,并且像在python3.0中一樣工作,對于整數(shù)執(zhí)行截斷除法,對于浮點數(shù)執(zhí)行浮點除法。
不斷更新中》。。。。
##參考資料
資料一

Python
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。