版本說明
Python 3.0在設計的時候沒有考慮向較早版本相容
Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。
除非為了使用舊的Python2.x項目代碼或只支持2.x的第三方庫,否則不推薦使用2.x進行編程
死人的print函數
Python 2.6與Python 2.7里面,以下三種形式是等價的:
print "fish"print ("fish") #注意print后面有個空格print("fish") #print()不能帶有任何其它參數
但python3.x只能使用后兩者,print語句被python3廢棄,只能使用print函數
Unicode
Python3中字符串是Unicode (utf-8)編碼,支持中文做標識符。
python2中是ASCII編碼,需要更改字符集才能正常支持中文,所以在.py文件中會看到#-- coding: UTF-8 --。
#python3中>>> 中國 = 'china' >>>print(中國) china#python2中>>> str = "我愛北京天安門">>> str'/xe6/x88/x91/xe7/x88/xb1/xe5/x8c/x97/xe4/xba/xac/xe5/xa4/xa9/xe5/xae/x89/xe9/x97/xa8'>>> str = u"我愛北京天安門">>> stru'/u6211/u7231/u5317/u4eac/u5929/u5b89/u95e8'
除法運算
單斜杠/,Python2中整數相除得整數,浮點小數相除得浮點;Python3中結果總是浮點數。
#python3>>print(10/5)2.0
雙斜杠//,Python2和3相同,都是除法結果去掉小數部分
>>print(10//3)3
異常處理
Python2中try:...except ERR,e:...,在Python3中改為了try:...except ERR as e:...#Python3try: open('a.txt','r')except Exception as e: print(e) #這里也不要使用e.message
python 2中觸發異常可以用raise IOError, "file error"或raise IOError("file error")兩種方式。
python 3中觸發異常只能用raise IOError("file error")。
異常StandardError 被Python3廢棄,統一使用Exception
xrange和range
Python3中不再使用xrange方法,只有range方法
range在Python2中返回列表,而在Python3中返回range可迭代對象
a=range(10)print(a)print(list(a))
輸出
range(0, 10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
八進制字面量
Python3中只能使用0o...格式,對于01000格式將拋出錯誤,而在Python2中兩種都能使用
>>> 01000 File "<stdin>", line 1 01000 ^SyntaxError: invalid token>>> 0o1000512
不等運算符
在Python2中有兩個不等運算符!=和<>,在Python3中去掉了<>,只有!=符號表示不等。
repr
在Python2中雙反引號``可以替代repr函數,在Python3中去掉了雙反引號的表是方法,只能用repr方法
新聞熱點
疑難解答