ホームページ >バックエンド開発 >Python チュートリアル >Python で副作用にリスト内包表記を使用することは悪い習慣とみなされますか?

Python で副作用にリスト内包表記を使用することは悪い習慣とみなされますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-27 16:39:09400ブラウズ

Is Using List Comprehensions for Side Effects in Python Considered Bad Practice?

副作用に対するリスト内包表記の使用: 非 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...)]

結果のリストは変数に割り当てられないことに注意してください。

The Anti-Pythonic自然

この方法でリスト内包表記を使用することは、いくつかの理由から強く推奨されません:

  • 非効率: 中間リストの作成は、特に次の場合にコストがかかる可能性があります。イテラブルが大きいです。リストは作成されますが、すぐに破棄されるため、リソースが無駄になります。
  • Unidiomatic: 経験豊富な Python 開発者は、副作用のある操作のために明示的な for ループを使用することを好みます。リスト内包表記は通常、新しい値を作成するために使用されます。
  • 混乱: リストを破棄すると、コードの意図が他のプログラマにとって不明瞭になる可能性があります。副作用を明示することをお勧めします。

推奨されるアプローチ

推奨されるアプローチは、for ループを使用して反復可能オブジェクトを反復処理し、必要な場合にのみ副作用を引き起こす関数:

for x in y:
    if (...conditions...):
        fun_with_side_effects(x)

このアプローチはより効率的で慣用的であり、より少ないものです。混乱する。これは、関数が主に副作用のために呼び出されていることを明確に示しています。

以上がPython で副作用にリスト内包表記を使用することは悪い習慣とみなされますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。