Python的3.0版本,常被稱為Python 3000,或簡稱Py3k。相對於Python的早期版本,這是一個較大的升級。
為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。
許多針對早期Python版本設計的程式都無法在Python 3.0上正常執行。
為了照顧現有程序,Python 2.6作為一個過渡版本,基本上使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。
新的Python程式建議使用Python 3.0版本的語法。
除非執行環境無法安裝Python 3.0或程式本身使用了不支援Python 3.0的第三方函式庫。目前不支援Python 3.0的第三方函式庫有Twisted, py2exe, PIL等。
大多數第三方函式庫都正在努力地相容Python 3.0版本。即使無法立即使用Python 3.0,也建議編寫相容於Python 3.0版本的程序,然後使用Python 2.6, Python 2.7來執行。
Python 3.0的變更主要在以下幾個方面
print語句沒有了,取而代之的是print()函數。
Python 2 有 ASCII str() 類型,unicode() 是單獨的,不是 byte 類型。
現在, 在 Python 3,我們最終有了 Unicode (utf-8) 字串,以及一個位元組類別:byte 和 bytearrays。
在python 3.x中/除法不再這麼做了,對於整數之間的相除,結果也會是浮點數。
在 Python 3 中處理異常也輕微的改變了,在 Python 3 中我們現在使用 as 作為關鍵字。
捕獲異常的語法由 except exc, var 改為 except exc as var。
在 Python 3 中,range() 是像 xrange() 那樣實作以至於一個專門的 xrange() 函數都不再存在(在 Python 3 中 xrange() 會拋出命名例外)。
在Python 3.x中,表示八進位字面量的方式只有一種,就是0o1000。
Python 3.x中去掉了<>, 只有!=一種寫法,還好,我從來沒有使用<>的習慣
Python 3.x 中去掉了``這種寫法,只允許使用repr函數,這樣做的目的是為了讓程式碼看上去更清晰麼?不過我覺得用repr的機會很少,通常只在debug的時候才用,多數時候還是用str函數來用字串描述物件。
多個模組被改名(根據PEP8)
Py3.X移除了long類型,現在只有一種整數型-int,但它的行為就像2.X版本的long
新增了bytes類型,對應2.X版本的八位元串,定義一個bytes字面量的方法如下:
str物件和bytes物件可以使用.encode() (str -> bytes) or .decode() (bytes -> str)方法相互轉換。
dict的.keys()、.items 和.values()方法傳回迭代器,而之前的iterkeys()等函數都被廢棄。同時去掉的還有 dict.has_key(),用 in取代它吧 。
以上是python3是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!