ホームページ >バックエンド開発 >Python チュートリアル >Python でのラムダの名前付けは Python 的とみなされますか?

Python でのラムダの名前付けは Python 的とみなされますか?

DDD
DDDオリジナル
2024-12-03 08:10:10925ブラウズ

Is Naming Lambdas in Python Considered Pythonic?

ラムダの名前付けは Python 的ですか?

Python では、ラムダ式は匿名関数になるように設計されています。ただし、開発者の中には、コードの再利用や特定の機能のために関数内でラムダに名前を付けることに価値があると考える人もいます。ただし、この方法では、Python の原則に準拠しているかという疑問が生じます。

Python スタイル ガイドである PEP8 によれば、ラムダに名前を付けることは推奨されていません。代わりに、def ステートメントを使用して特定の名前の関数を定義することをお勧めします。これにより、明確さが確保され、トレースバックが簡素化され、ラムダ式を使用する利点が排除されます。

ラムダ式の決定的な特徴は、その匿名性です。名前を付けることで、匿名性が効果的に削除されます。さらに、その機能が、それが出現する関数に固有のものである場合は、別個の関数を定義する必要がない場合があります。代わりに、ネストされた関数の使用を検討してください。

たとえば、指定されたコード スニペット:

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

    # codecodecode
    
    indexed = indexer(array0, array1, indices)
    
    # codecodecode in which other arrays are created and require `indexer`
    
    return the_answer

ラムダ式インデクサーに名前を付けるのではなく、ネストされた関数を使用して定義できます。

def fcn_operating_on_arrays(array0, array1):
    def indexer(a0, a1, idx):
        return a0[idx] + a1[idx]

    # codecodecode
    
    indexed = indexer(array0, array1, indices)
    
    # codecodecode in which other arrays are created and require `indexer`
    
    return the_answer

ネストされた関数を使用すると、機能は外部関数に固有のままとなり、名前付き関数が提供され、Pythonic に準拠します。原則。

以上がPython でのラムダの名前付けは Python 的とみなされますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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