副作用に対するリスト内包表記: Python 的アプローチ
Python では、リスト内包表記は既存のシーケンスから新しいリストを作成するためによく使用されます。ただし、画面への印刷やグラフィカル ユーザー インターフェイスの更新などの副作用のためにリスト内包表記を使用したくなる場合があります。
次の関数を考えてみましょう。これは副作用を実行しますが、意味のある値を返しません。 :
def fun_with_side_effects(x): # ...side effects... return None
疑問が生じます:リストを使用してこの関数を呼び出すのは Python 的ですか?内包表記?
[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 ループのアプローチは、不要なリスト。また、必要な場合にのみ fun_with_side_Effects を呼び出すため、より効率的です。
したがって、副作用のある関数を呼び出すときは、for ループ構文を使用することをお勧めします。このアプローチは Python の原則に準拠しており、コードの効率性を確保します。
以上がPython で副作用にリスト内包表記を使用することは Python 的とみなされますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。