3個例子教你重構 Python 程式碼
1. 合併巢狀的 if 條件
太多的巢狀會使程式碼難以理解,這在 Python 中尤為如此,因為 Python 沒有括號來幫助區隔不同的巢狀級別。
閱讀深度巢狀的程式碼容易讓人煩躁,因為你必須理清哪些條件屬於哪一級。因此,我們應儘可能減少巢狀,如果兩個條件可以用 and 合在一起,會比巢狀更易讀。
合併之前:
if a: if b: return c
合併後:
if a and b: return c
2. 將重複的程式碼移到條件語句之外
我們應該始終尋找移除重複程式碼的方法。這是提升程式碼能力的好辦法。
有時,在條件的兩個分支上出現重複程式碼,這意味這段程式碼將始終執行。因此這段重複的程式碼可以從條件中移出,放在條件之外執行。
if sold > DISCOUNT_AMOUNT: total = sold * DISCOUNT_PRICE label = f'Total: {total}'else: total = sold * PRICE label = f'Total: {total}'
透過將對label變數賦值移到到條件之外,我們刪除了重複的程式碼行,並明確了條件實際控制的內容,就是計算total。
if sold > DISCOUNT_AMOUNT: total = sold * DISCOUNT_PRICEelse: total = sold * PRICElabel = f'Total: {total}'
3. 將內部迴圈中的yield替換為yield from
經常忽略的一個小竅門是 Python 的yield關鍵字有對應的為collections準備的yield from。因此無需使用 for 迴圈遍歷集合。這使程式碼變短,並刪除 for 中的額外變數。而且消除 for 迴圈後,yield from使程式執行效率提高約 15%。
重構前:
def get_content(entry): for block in entry.get_blocks(): yield block
重構後:
def get_content(entry): yield from entry.get_blocks()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997824/viewspace-2767437/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 6 個例子教你重構 Python 程式碼Python
- 一個利用正規表示式進行程式碼重構,去除冗餘程式碼的例子行程
- 優化重構Python程式碼6個小建議優化Python
- 程式碼重構:類重構的 8 個小技巧
- 程式碼重構:函式重構的 7 個小技巧函式
- 使用JavaScript Function.prototype進行程式碼重構的一些例子JavaScriptFunction行程
- Python教程:異常捕捉與程式碼重構Python
- 程式碼重構之法——方法重構分析
- 我的第一個python web開發框架(33)——介面程式碼重構PythonWeb框架
- “硬核”程式碼重構
- 重構 PHP 程式碼PHP
- 30個python教你學會優雅的寫程式碼Python
- 簡單的3步,重構我們的程式碼
- 【讀程式碼重構有感】
- 談談程式碼重構
- 程式碼重構技巧(二)
- 重構你的javascript程式碼JavaScript
- 程式碼重構那些事兒
- 重構改善既有的程式碼設計(重構原則)
- Lambda和清潔程式碼的一個重構案例 - frankel
- Laravel Enlightn 一個免費的程式碼重構小助手Laravel
- 程式碼重構與單元測試——“提取方法”重構(三)
- 重構程式碼(應如寫詩)
- 程式碼的壞味道和重構
- 記一次程式碼重構
- python3筆記---抽象類例子Python筆記抽象
- 重構聚合支付案例教你如何寫出高擴充套件性易讀的程式碼套件
- [譯] 用個實在例子來教你掌握 Async/AwaitAI
- 重構:改善既有程式碼的設計(第二版讀書筆記) - 重構、壞程式碼、寫好程式碼筆記
- 20行Python程式碼教你讓影片字元化Python字元
- jscodeshift入門簡介&程式碼重構&程式碼分析&&ReactJSReact
- Python技巧-教你用Python告白小姐姐(附程式碼)Python
- 程式碼重構-業務中臺化
- leobert重構程式碼二三事--一.可怕的低階程式碼
- 500行程式碼,教你用python寫個微信飛機大戰行程Python
- 還重構?就你那程式碼只能鏟了重寫!
- 35行python程式碼教你向ta說情話Python
- 免費直播 | 阿里大佬手把手教你程式碼重構(免費名額有限,趕緊掃碼上車!阿里