3個例子教你重構 Python 程式碼

資料與人發表於2021-04-10

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章