ホームページ >バックエンド開発 >Python チュートリアル >名前を付けるかどうか: Python で Lambda に名前を割り当てる必要があるのはどのような場合ですか?

名前を付けるかどうか: Python で Lambda に名前を割り当てる必要があるのはどのような場合ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-27 14:43:11726ブラウズ

To Name or Not to Name: When Should You Assign Names to Lambdas in Python?

Python でラムダに名前を付ける必要がありますか?

ラムダ式は、Python で匿名関数を定義するための簡潔で便利な方法を提供します。ただし、コードの再利用や特定の機能のために、関数内のラムダに名前を割り当てたくなることがよくあります。

ラムダの名前付けに関する批判

この方法は便利に見えるかもしれませんが、これは一般に非 Python とみなされ、PEP8 の推奨に反します。 PEP8 には次のように記載されています:

「ラムダ式を識別子に直接バインドする代入ステートメントの代わりに、常に def ステートメントを使用してください。」

この推奨の背後にある理論的根拠は、ラムダをfunction:

  • 明確かつ明示的な情報を提供します。 name: 名前付きラムダとは異なり、def ステートメントは関数を意味のある識別子に明示的に関連付けます。
  • トレースバックと文字列表現に役立ちます: 名前付き関数は、エラー メッセージと文字列に特定の名前を表示します。
  • の主な利点が失われます。 lambdas: 変数をラムダに割り当てる場合、より大きな式内に匿名関数を埋め込む機能は冗長です。

例を考えてみましょう。質問で提供されている関数:

def fcn_operating_on_arrays(array0, array1):
    indexer = lambda a0, a1, idx: a0[idx] + a1[idx]
    
    # ...
    indexed = indexer(array0, array1, indices)
    # ...

名前付きを使用する代わりにラムダでは、明示的に名前を付けた別個の関数を定義する方が Python 的です。

def index_array(a0, a1, idx):
    return a0[idx] + a1[idx]

def fcn_operating_on_arrays(array0, array1):
    
    # ...
    indexed = index_array(array0, array1, indices)
    # ...

結論

ラムダに名前を割り当てると、特定の状況では便利に見えるかもしれませんが、はお勧めできません。代わりに、明確さ、読みやすさ、ベスト プラクティスの順守を維持するために明示的な関数定義を使用するという Python の原則に従ってください。

以上が名前を付けるかどうか: Python で Lambda に名前を割り当てる必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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