
798
|
第 26 章 v2/v3 的移轉與共存
為了相容性要避免的不相容語法
維護雙重版本源碼庫最有風險的部分之一是這會迫使你
不
使用 v3 的某些新
功能。那些功能通常是為了讓該語言更容易使用而被加入的,所以避開它
們必然會使程式設計的工作更困難一點。
連同之前描述過的差異,你需要避免的其他 v3 功能還包括:函式注釋
(function annotations),如前面「函式注釋和型別提示(僅限 v3)」中所
涵蓋的;
nonlocal
述句,涵蓋於「巢狀函式和巢狀範疇」;僅限關鍵字引數
(keyword-only arguments),涵蓋於「「僅限關鍵字」參數(僅限 v3)」;
以及 class 述句中的
metaclass=
,涵蓋於「class 述句」中。此外,v3 中的
串列概括式(list comprehensions)有它們自己的範疇(scope),跟在 v2
中不同,涵蓋於前面的串列概括式和變數範疇中。最後也很重要的是,我
們在本書中標示為「3.6 中的新功能」的那些顯然也必須在 v2 中避免。
選擇你的支援策略
你得決定要如何使用 Python,依據你的特定需求來判斷。策略的選擇有各
方面的限制,而每種策略都有好處跟缺點。決定你要支援哪個(或哪些)
版本以及如何支援時,你得務實一點。
一種比較沒有生產力的策略是為兩個版本分別維護一個源碼樹(就像相同
的 code repository 的兩個分支)。Python 的核心開發團隊為 CPython 2.* 和
3.* 分別維護兩個源碼樹(separate ...