如何過渡至 Python 3
原文地址: http://www.aaronsw.com/weblog/python3
譯者: yudun1989
作為一個普通的 Python 開發者,不免會碰到 Python 2 到 3 轉換不成功的問題。我經常會得到一些請求說要讓我寫的庫能夠在 Python 3 中執行,但是對於如何升級這個問題,在我嘗試了各種各樣解決衝突的建議之後,並沒有發現有多少個可行的方案。
確實,當你看到新的 3.x 匆匆釋出,卻沒有多少人來使用,難免會去猜測 Python 是否會在這次艱難的轉型中倒下。那麼我們應該如何來幫助它越過這道坎?
我似乎看到很多關於 Python 3 徹底的,未來的,嶄新的版本特性的討論,但我們卻忽視了升級的方法。在 Python 2 時代,我們有非常清楚的方法來應對版本更新。
- 在 Python 2.a 版本中, 加入了
from __future__ import new_feature
語句,你就可以明確宣告你想要使用的新特性來使用新功能。 - 在 Python 2.b 版本中, 預設加入了新功能,你不需要在使用之前去宣告 future。
- 在 Python 2.c 版本中,當你在使用舊的方法時,將會產生警告,來通知你改變你的既有程式碼,或者是停止執行。
- 在 Python 2.d 版本中,它就真的停止工作了。
這種方法可能確實蠻有效,但是我卻不清楚為什麼在向 Python 3 轉換的過程中,卻沒有什麼效果。它可能只是想表達:
- Python 2.x 版本將會支援
from __future__ import python3
將這個加在檔案的首部將會宣告這是一個 Python 3 檔案,編譯器將會正確的解析它 (我意識到這樣做可能會為 Python 2 和 3 的編譯器帶來許多繁重的工作,但是坦誠地說,維護一個統一的程式碼庫永遠都是件好事)。
如果我想讓我基於 Python 2 的程式去使用一些屬於 Python 3 的模組,我只需要確認這些模組在頭部都有呼叫 import 。如果我想給我的模組釋出一個可以在 Python 3 上執行的新版本,我只需要宣告這個程式只在 Python 2.x 或更高版本中執行(使用新的 import
語句)。如果專案比較大,我甚至可以一次性地將版本升級到
3,留下舊程式碼,直到一些人來修正這些瑣碎。最重要的,我可以升級到 Python 3 而不必等到所有的依賴都滿足、直到有一個完整的方案時才來解決。
使用者只有知道在不改變既有程式碼的情況下他們才會升級到 2.x 版本。開發者知道大家最終會升級到 2.x 所以他們放棄對之前版本的支援。但是既然 2.x 的程式碼在 3 下也相容,那麼他們就會開始編寫和釋出可以和未來相容的程式碼,最終大部分的程式碼都將會在 Python 3 下工作,使用者也會升級到 3 (2.x 將會對一些殘餘的程式碼給以警告)。最後我們可以丟掉對 2.x 的支援,然後讓所有的程式碼都能得到更好的相容。
這不是一個激進的點子,這是 Python 升級既有的方式。除非我們再次這樣做,否則我不知道我們如何才能渡過這個艱難的階段。
from: http://pycoders-weekly-chinese.readthedocs.io/en/latest/issue4/how-python3-should-have-worked.html
相關文章
- 如何觸發css3過渡動畫CSSS3動畫
- CSS3過渡CSSS3
- CSS3——過渡(transition)CSSS3
- css3過渡詳解CSSS3
- CSS3過渡和動畫CSSS3動畫
- Vue實列之過渡和動畫,標籤過渡,多元件過渡,列表過渡Vue動畫元件
- css3過渡效果詳解CSSS3
- CSS3-過渡、變形、動畫CSSS3動畫
- CSS3實現文字過渡移動CSSS3
- CSS3的過渡,動畫,圖形轉換CSSS3動畫
- IPv4如何向IPv6過渡?IPv6過渡轉換技術有哪些?
- CSS3 動畫實現的 3D 圖片過渡特效CSSS3動畫3D特效
- CSS 如何讓auto height完美支援過渡動畫?CSS動畫
- vue 巧用過渡效果Vue
- Vue過渡與動畫Vue動畫
- 自定義過渡動畫動畫
- Vue 3現實生活中的過渡和微互動Vue
- Activity過渡(跳轉)動畫動畫
- d3.js 入門學習記錄(六) 過渡動畫JS動畫
- CSS3 變形、過渡、動畫、關聯屬性淺析CSSS3動畫
- (中級)用CSS3過渡設計搜尋表單CSSS3
- vue的列表交錯過渡Vue
- CSS 炫酷文字過渡動畫CSS動畫
- Android過渡動畫學習Android動畫
- 好程式設計師web前端技術之CSS3過渡程式設計師Web前端CSSS3
- 關於CSS3的變形、過渡、動畫、關聯屬性CSSS3動畫
- 【CSS3-transition】過渡完成之後執行自定義處理CSSS3
- CSS3實現偽類hover離開時平滑過渡效果CSSS3
- 通過示例瞭解Vue過渡和動畫Vue動畫
- 從SAP APO到SAP IBP:CIO如何實現最佳過渡?
- Flutter 建立自定義路由過渡動畫Flutter路由動畫
- 在 Flutter 新增頁面過渡動畫Flutter動畫
- 【譯】CSS遮罩實現過渡效果CSS遮罩
- 第4章 Vue 過渡和動畫Vue動畫
- [譯] WindowsInsets 和 Fragment 過渡動畫WindowsFragment動畫
- html5 學習--平滑過渡HTML
- [iOS]過渡動畫之高階模仿 airbnbiOS動畫AI
- Vue過渡的應用及技巧Vue