文章目錄
- 1. 語法與關鍵字
- `print` 函數
- 整數除法
- 2. 字符串處理
- 默認字符串類型
- 字符串格式化
- 3. 輸入函數
- 4. 迭代器和生成器
- `range` 函數
- `map`, `filter`, `zip`
- 5. 標準庫變化
- `urllib` 模塊
- `configparser` 模塊
- 6. 異常處理
- 7. 移除的功能
- 8. 其他重要改進
- 數據庫操作
- 多線程與并發
- 類型注解
- 9. 總結
Python 是一門強大且廣泛使用的編程語言。從 Python 2 到 Python 3 的過渡引入了許多重要的變化,使得 Python 3 成為現代開發的首選版本。本文將總結 Python 3 與 Python 2 的主要區別,并參考官方文檔對關鍵點進行分析。
1. 語法與關鍵字
print
函數
在 Python 2 中,print
是一個語句,而在 Python 3 中,它被改為函數。
Python 2:
print "Hello, World!"
Python 3:
print("Hello, World!")
整數除法
在 Python 2 中,整數除法會進行向下取整,而 Python 3 中則返回浮點數。
Python 2:
print 5 / 2 # 輸出 2
Python 3:
print(5 / 2) # 輸出 2.5
如果希望在 Python 3 中獲得整數除法的結果,可以使用 //
:
print(5 // 2) # 輸出 2
2. 字符串處理
默認字符串類型
- Python 2 默認使用 ASCII 編碼,字符串為
str
類型。 - Python 3 默認使用 Unicode 編碼,字符串為
str
類型。
Python 2:
s = "你好" # ASCII 可能導致編碼錯誤
Python 3:
s = "你好" # 默認支持 Unicode,無需額外處理
如果在 Python 3 中處理二進制數據,可以使用 bytes
類型:
b = b"binary data"
字符串格式化
Python 3 引入了更強大的格式化方法 str.format()
和 f-string。
Python 2:
print("%s is %d years old" % ("Alice", 30))
Python 3:
print("{} is {} years old".format("Alice", 30))
# 或使用 f-string
name, age = "Alice", 30
print(f"{name} is {age} years old")
3. 輸入函數
在 Python 2 中,input()
將輸入解析為代碼,而 raw_input()
返回字符串。
Python 2:
name = raw_input("Enter your name: ") # 返回字符串
Python 3:
name = input("Enter your name: ") # 默認返回字符串
4. 迭代器和生成器
range
函數
在 Python 2 中,range()
返回列表;在 Python 3 中,range()
返回一個生成器對象,更節省內存。
Python 2:
print(range(5)) # 輸出 [0, 1, 2, 3, 4]
Python 3:
print(range(5)) # 輸出 range(0, 5)
print(list(range(5))) # 轉為列表 [0, 1, 2, 3, 4]
map
, filter
, zip
在 Python 2 中,這些函數返回列表,而在 Python 3 中返回迭代器。
Python 2:
print(map(str, [1, 2, 3])) # 輸出 ['1', '2', '3']
Python 3:
print(list(map(str, [1, 2, 3]))) # 需要顯式轉換為列表
5. 標準庫變化
urllib
模塊
- 在 Python 2 中,
urllib
和urllib2
是分開的模塊。 - 在 Python 3 中,功能被整合到了
urllib.request
和urllib.error
中。
Python 2:
import urllib2
response = urllib2.urlopen("http://example.com")
Python 3:
import urllib.request
response = urllib.request.urlopen("http://example.com")
configparser
模塊
在 Python 3 中,ConfigParser
被重命名為 configparser
,并改進了功能。
6. 異常處理
Python 3 中,異常必須使用 as
關鍵字綁定到變量。
Python 2:
try:x = 1 / 0
except ZeroDivisionError, e:print e
Python 3:
try:x = 1 / 0
except ZeroDivisionError as e:print(e)
7. 移除的功能
print
語句:被print()
函數取代。long
類型:Python 3 將所有整數合并為int
類型。xrange
:被range
取代。<>
比較運算符:在 Python 3 中必須使用!=
。
8. 其他重要改進
數據庫操作
Python 3 中的數據庫模塊如 sqlite3
默認支持 Unicode,更適合現代開發需求。
多線程與并發
Python 3 引入了 concurrent.futures
模塊,簡化了多線程和多進程編程。
類型注解
Python 3 支持類型注解,使代碼更具可讀性和可維護性。
示例:
def greet(name: str) -> str:return f"Hello, {name}"
9. 總結
從 Python 2 到 Python 3 的變化是顯著的,尤其是對語法一致性、性能優化和現代化開發需求的支持。雖然 Python 2 已經在 2020 年停止支持,但了解它與 Python 3 的差異仍有助于維護舊代碼或遷移項目。對于新開發,推薦使用 Python 3 的最新版本,以充分利用其特性和改進。
參考資料:
- Python 官方文檔