簡單介紹下python2.x與python3.x的區別
1、Python 3.x print函式代替了print語句
(推薦學習:)
在 Python2.x 中,輸出資料使用的是 Print 語句,例如:
>>> print "3,4" 3,4 或者 >>> print(3,4) (3,4)
但是在 Python 3.x 中,print 語句沒有了,取而代之的是 print 函式,例如:
>>> print(3,4) 3 4
如果還像 Python 2.x 中那樣使用 print 語句,Python 編譯器就會報錯,例如:
>>> print "3,4" File "<stdin>", line 1 print "3,4" ^ SyntaxError: Missing parentheses in call to 'print'
2、Python 3.x 預設使用 UTF-8 編碼
相比 Python 2.x 預設採用的 ASCII 編碼,Python 3.x 預設使用 UTF-8 編碼,可以很好地支援中文或其它非英文字元。
例如,輸出一句中文,使用 Python 2.x 和 Python 3.x 的區別如下:
#Python 2.x >>>str ="C語言中文網" >>>str 'Cxe8xafxadxe8xa8x80xe4xb8xadxe6x96x87xe7xbdx91' #Python 3.x >>>str ="C語言中文網" >>>str 'C語言中文網'
不僅如此,在 Python 3.x 中,下面的程式碼也是合法的:
>>>中國="China" >>>print(中國) China
3、Python 3.x 除法運算
和其他語言相比,Python 的除法運算要高階很多,它的除法運算包含 2 個運算子,分別是 / 和 //,這 2 個運算子在 Python 2.x 和 Python 3.x 的使用方法如下:
/ 運算子
在 Python 2.x 中,使用運算子 / 進行除法運算的方式和 Java、C 語言類似,整數相除的結果仍是一個整數,浮點數除法會保留小數點部分,例如:
>>>1/2 0 >>>1.0/2 0.5
但是在 Python 3.x 中使用 / 運算子,整數之間做除法運算,結果也會是浮點數。例如:
>>>1/2 0.5
運算子 //
使用運算子 // 進行的除法運算叫做 floor 除法,也就是輸出不大於結果值的一個最大的整數(向下取整)。此運算子的用法在 Python 2.x 和Python 3.x 中是一樣的,舉個例子:
#Python 2.x >>> -1//2 -1 #Python 3.x >>> -1//2 -1
4、Python 3.x 異常
在 Python 3.x 版本中,異常處理改變的地方主要在以下幾個方面:在 Python 2.x 版本中,所有型別的物件都是直接被丟擲的,但是在 Python 3.x 版本中,只有繼承 BaseException 的物件才可以被丟擲。在 Python 2.x 版本中,捕獲異常的語法是“except Exception,var:”;但在 Python 3.x 版本中,引入了 as 關鍵字,捕獲異常的語法變更為 “except Exception as var:”。
在 Python 3.x 版本中,處理異常用 “raise Exception(args)”代替了“raise Exception,args”。Python 3.x 版本中,取消了異常類的序列行為和 .message 屬性。
有關 Python 2.x 版本和 Python 3.x 版本處理異常的示例程式碼如下所示:
#Python 2.x >>> try: ... raise TypeError,"型別錯誤" ... except TypeError,err: ... print err.message ... 型別錯誤 #Python 3.x >>> try: ... raise TypeError("型別錯誤") ... except TypeError as err: ... print(err) ... 型別錯誤
5、Python 3.x 八進位制字面量表示
在 Python 3.x 中,表示八進位制字面量的方式只有一種,並且必須寫成“0o1000”這樣的方式,原來“01000”的方式不能使用了。舉個例子:
#Python 2.x >>> 0o1000 512 >>> 01000 512 #Python 3.x >>> 01000 File "<stdin>", line 1 01000 ^ SyntaxError: invalid token >>> 0o1000 512
6、Python 3.x 不等於運算子
Python 2.x 中的不等於運算子有 2 種寫法,分別為 != 和 <>,但在 Python 3.x 中去掉了 <>,只有 != 這一種寫法,例如:
#Python 2.x >>> 1!=2 True >>> 1<>2 True #Python 3.x >>> 1!=2 True >>> 1<>2 File "<stdin>", line 1 1<>2 ^ SyntaxError: invalid syntax
7、Python 3.x 資料型別
Python 3.x 中對資料型別也做了改動,比如說:Python 3.x 去除了 long 型別,現在只有一種整形 int,但它的行為就像是 Python 2.x 版本中的 long。Python 3.x 新增了 bytes 型別,對應 Python 2.x 版本的八位串,定義 bytes 字面量的方法如下所示:
>>>b=b'China' >>>type(b) <type 'bytes'>
字串物件和 bytes 物件可以使用 .encode() 或者 .decode()方法相互轉化,例如:
>>>s=b.decode() >>>s 'China' >>>b1=s.encode() >>>b1 b'China'
Python 3.x 中,字典的 keys()、items() 和 values() 方法用返回迭代器,且之前的 iterkeys() 等函式都被廢棄。同時去掉的還有 dict.has_key(),改為用 in 替代。
以上只是一部分內容,想了解更多相關內容請訪問。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4328/viewspace-2832578/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 簡單介紹 "&&" 與 “&” 和 ”|“ 與 ”||“ 的區別
- callee與caller的區別簡單介紹
- Python3.x和Python2.x的區別Python
- python2.x和python3.x區別Python
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- URL和URI的區別簡單介紹
- closest()、parents()和parent()方法的區別簡單介紹
- javascript原始值和物件的主要區別簡單介紹JavaScript物件
- inherit和initial屬性值區別簡單介紹
- npm與cnpm的區別介紹NPM
- document.documentElement和document.body區別簡單介紹
- height:inherit和height:100%的區別簡單介紹
- FTP和TFTP的區別與介紹FTP
- SSL與TLS的區別以及介紹TLS
- Disruptor的簡單介紹與應用
- orm的method屬性值post和get的區別簡單介紹ORM
- 簡單介紹Go 中的空白識別符號下劃線Go符號
- max-height和height屬性的區別簡單介紹
- js與&&運算子簡單介紹JS
- php中explode與split的區別介紹PHP
- javascript Object型別物件簡單介紹JavaScriptObject型別物件
- 簡單介紹一下 JSONJSON
- 簡單介紹Java String Methods(下)Java
- linux 下增加硬碟簡單介紹Linux硬碟
- Webpack 的簡單介紹Web
- Promise的簡單介紹Promise
- CFRunloopObserverRef 的簡單介紹OOPServer
- POP簡單介紹與使用實踐
- jar包和war包的介紹與區別JAR
- ZT:簡單介紹join,outer-join,semi-join,anti-join的區別
- SVG簡單介紹SVG
- HTML簡單介紹HTML
- ActiveMQ簡單介紹MQ
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- SCSS 簡單介紹CSS
- UICollectionView 簡單介紹UIView