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 檔名。