Python(9)の学習-クロージャ関数とランバ

1.閉鎖

クロージャは、クロージャ関数またはクローズド関数とも呼ばれ、実際には上記のネストされた関数に似ています。違いは、クロージャの外部関数が特定の値ではなく関数を返すことです。通常の状況では、返された関数は変数に割り当てられ、後で実行して呼び出すことができます。クロージャには、自由変数のアドレスを記録する通常の関数よりも追加の__closure__属性があります。クロージャが呼び出されると、システムはアドレスに従って対応する自由変数を見つけ、関数呼び出し全体を完了します。

クロージャーを使用すると、プログラムがより簡潔で読みやすくなります。

例:べき乗関数を記述します

def power(number):
    def powermath(base):
        return base**number

    return powermath
 
cube = power(3)
print(cube(5),"of the address is",cube.__closure__)

出力は次のとおりです。

外部関数power()の戻り値は、特定の値ではなく、関数powermath()です。表示される内容は、キューブ内の自由変数番号の初期値であるint整数型です。__closure__属性のタイプがタプルであることがわかります。これは、クロージャーが複数の自由変数をサポートできることを示しています。

2.ラムダ

単純な関数を定義するために、Python は別のメソッドも提供します。つまり、このセクションで説明するラムダ式を使用します。ラムダ式は無名関数とも呼ばれ、内部に1行の式のみを含む関数を示すためによく使用されます。関数の本体に式が1行しかない場合は、関数をラムダ式に置き換えることができます。

ラムダ式の構文形式は次のとおりです。name= lambda [list]:expression。その中で、ラムダ式を定義するには、lambdaキーワードを使用する必要があります。オプションのパラメーターとしての[list]は、指定されたパラメーターリストとして関数を定義することと同じです。valueは式の名前です。

ラムダ式はこのように理解できます。これは、単純な関数の省略形です(関数本体は1行の式のみです)。関数と比較して、ランバ式には次の2つの利点があります。

  • 単一行関数の場合、ラムダ式を使用すると、関数を定義するプロセスを節約し、コードをより簡潔にすることができます。
  • 複数回再利用する必要のない関数の場合、ラムダ式の使用を使い切った直後に解放できるため、プログラム実行のパフォーマンスが向上します。

 

おすすめ

転載: blog.csdn.net/qq_35789421/article/details/113567820