使用列表推導式實現副作用:非Python 實踐
Python 的列表推導式是基於現有可迭代對象創建新列表的強大工具。雖然它們提供了簡潔且富有表現力的語法,但僅因為其副作用而使用列表推導式被認為是反 Python 的。
問題
考慮一個執行副作用的函數,例如例如列印到螢幕、更新 GUI 或寫入檔案。它會傳回一個值,但該值通常不令人感興趣。
def fun_with_side_effects(x): ...side effects... return y
人們可能會想使用列表理解來調用此函數以獲取其副作用,如下所示:
[fun_with_side_effects(x) for x in y if (...conditions...)]
請注意,結果列表未分配給變數。
反Pythonic Nature
強烈建議不要以這種方式使用列表推導式,原因如下:
首選方法
首選方法是使用for 循環迭代可迭代對象並調用僅在必要時才使用副作用函數:
for x in y: if (...conditions...): fun_with_side_effects(x)
這種方法更有效率、更慣用、更不易混淆。這清楚地表明該函數被呼叫主要是因為它的副作用。
以上是在 Python 中使用列表推導式來產生副作用是否被認為是不好的做法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!