Python 3 相容性模組#
注意
這完全複製自舊的 IPython wiki,目前正在開發中。本開發指南的許多資訊已過時。
IPython.utils.py3compat
模組提供了一些函式,以方便為 Python 2 和 3 編寫程式碼。我們還在安裝過程中使用 2to3 來更改語法,以及 io.open()
函式,它本質上是 Python 3 中內建的 open 函式。
提供的名稱有
PY3:在 Python 3 中為 True,在 Python 2 中為 False。
雜項#
input:在 Python 2 中指
raw_input
,在 Python 3 中指input
(需要,因為 2to3 只轉換對 raw_input 的呼叫,而不轉換對其他名稱的賦值)。builtin_mod_name:你匯入以獲取內建模組的字串名稱(
__builtin__
–>builtins
)。isidentifier:檢查字串是否是有效的 Python 識別符號。
open:Python 3 支援 unicode 的 open 函式的簡單包裝器。類似於
codecs.open
,但允許通用換行符。當前實現只支援最簡單的用法。MethodType:Python 3 中的
types.MethodType
。只接受兩個引數:函式,例項。Python 2 的 class 引數會自動填充。doctest_refactor_print:可以對字串或函式呼叫(或用作裝飾器)。在 Python 3 中,它將 doctests 中的 print 語句轉換為 print() 呼叫。2to3 會對真正的 doctests 執行此操作,但我們還需要在其他幾個地方使用它。它只是使用正則表示式,這對於當前情況來說已經足夠了。
u_format:如果測試使用 unicode 字串的 repr(),則應將其寫為
'{u}"thestring"'
,並將其提供給此函式,該函式將為 Python 2 生成'u"thestring"'
,為 Python 3 生成'"thestring"'
。也可以用作裝飾器,以處理 docstring。execfile:在 Python 3 中返回(因為它不再是內建函式),並在 Python 2 上升級以處理 Unicode 檔名。