基本用法
請考慮以下 Python2.x 程式碼。將檔案另存為 example.py
Python 2.x >= 2.0
def greet(name):
print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)
在上面的檔案中,有幾個不相容的行。在 Python 3.x 中,raw_input()
方法已被替換為 input()
,而 print
不再是一個語句,而是一個函式。可以使用 2to3 工具將此程式碼轉換為 Python 3.x 程式碼。
Unix
$ 2to3 example.py
Windows
> path/to/2to3.py example.py
執行上面的程式碼將輸出與原始原始檔的差異,如下所示。
RefactoringTool: Skipping implicit fixer: buffer
RefactoringTool: Skipping implicit fixer: idioms
RefactoringTool: Skipping implicit fixer: set_literal
RefactoringTool: Skipping implicit fixer: ws_comma
RefactoringTool: Refactored example.py
--- example.py (original)
+++ example.py (refactored)
@@ -1,5 +1,5 @@
def greet(name):
- print "Hello, {0}!".format(name)
-print "What's your name?"
-name = raw_input()
+ print("Hello, {0}!".format(name))
+print("What's your name?")
+name = input()
greet(name)
RefactoringTool: Files that need to be modified:
RefactoringTool: example.py
可以使用 -w 標誌將修改寫回原始檔。除非給出 -n 標誌,否則將建立名為 example.py.bak
的原始檔案的備份。
Unix
$ 2to3 -w example.py
Windows
> path/to/2to3.py -w example.py
現在 example.py
檔案已經從 Python 2.x 轉換為 Python 3.x 程式碼。
完成後,example.py
將包含以下有效的 Python3.x 程式碼:
Python 3.x >= 3.0
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)