副作用的列表推導式:Pythonic 方法
在 Python 中,列表推導式通常用於從現有序列建立新列表。但是,使用列表推導式來消除其副作用可能很誘人,例如列印到螢幕或更新圖形使用者介面。
考慮以下函數,它會執行副作用但不會傳回任何有意義的值:
def fun_with_side_effects(x): # ...side effects... return None
問題出現了:使用列表呼叫這個函數是Pythonic嗎
[fun_with_side_effects(x) for x in y if (...conditions...)]
或者,可以使用標準for循環呼叫函數:
for x in y: if (...conditions...): fun_with_side_effects(x)
雖然列表推導式看起來像是一種簡潔而有效的解決方案,但它們被認為是反-在這種情況下Pythonic。這是因為中間列表被創建,然後立即被丟棄,這既浪費又計算成本高,特別是當序列很大時。
for 循環方法比較 Pythonic,因為它避免了建立不必要的清單。它也更有效率,因為它只在必要時呼叫 fun_with_side_effects。
因此,在呼叫有副作用的函數時,建議使用 for 迴圈語法。這種方式遵循Pythonic原則並確保程式碼效率。
以上是在 Python 中使用列表推導式實作副作用是否被視為 Pythonic?的詳細內容。更多資訊請關注PHP中文網其他相關文章!