クロージャは Python でどのように実装されますか?
クロージャは関数内で定義された関数であり、外部関数の変数は関数内で参照されます。この機能により、内部関数が外部関数の変数にアクセスできるようになり、外部関数の実行が完了した後も、クロージャは引き続き外部関数の変数にアクセスして操作できます。
クロージャは、次の手順で Python に実装されます。
外部関数を定義し、その内部に内部関数を定義します。 まず、外部関数の内部を定義する必要があります。内部関数。この内部関数がクロージャです。
def outer_function(): # 定义内部函数 def inner_function(): pass
内部関数は外部関数の変数を参照します: 内部関数では、外部関数の変数を参照する必要があります。外部関数の変数を内部関数のパラメーターとして使用したり、外部関数の変数を内部関数内で直接使用したりできます。
def outer_function(): # 外部函数的变量 x = 10 # 定义内部函数 def inner_function(): # 引用外部函数的变量 print(x)
内部関数を返す: 外部関数では、内部関数を戻り値として返します。
def outer_function(): # 外部函数的变量 x = 10 # 定义内部函数 def inner_function(): # 引用外部函数的变量 print(x) # 返回内部函数 return inner_function
外部関数を呼び出してクロージャを生成する: 外部関数を呼び出してクロージャを生成します。この時点で、内部関数は外部関数の変数を参照し、外部関数の実行が完了した後も引き続きこれらの変数にアクセスして操作できます。
def outer_function(): # 外部函数的变量 x = 10 # 定义内部函数 def inner_function(): # 引用外部函数的变量 print(x) # 返回内部函数 return inner_function # 调用外部函数,生成闭包 closure = outer_function()
上記の手順により、Python でクロージャを正常に実装できました。この時点で、クロージャを呼び出すことで外部関数の変数にアクセスして操作できるようになります。
closure() # 输出:10
クロージャの重要な特徴は、外部関数の実行が完了した後も、クロージャは外部関数の変数にアクセスして操作できることです。これは、クロージャが変数の値をコピーするのではなく、外部関数変数への参照を保持するためです。したがって、クロージャを複数回呼び出すことでクロージャの動作を観察できます。
def outer_function(): # 外部函数的变量 x = 10 # 定义内部函数 def inner_function(): # 引用外部函数的变量 print(x) # 返回内部函数 return inner_function # 调用外部函数,生成闭包 closure = outer_function() closure() # 输出:10 # 修改外部函数的变量 outer_function.x = 20 closure() # 输出:20
上記のコードを見ると、呼び出されたときにクロージャが外部関数の変数を出力することがわかります。外部関数の実行が完了した後でも、クロージャは引き続き外部関数の変数にアクセスして操作できます。 。
Python でのクロージャの実装はシンプルかつ明確で、関数のネストと外部変数の参照のメカニズムを通じて、関数はメモリ機能と永続性を備えています。これが、クロージャが Python で広く使用される理由の 1 つです。
以上がPython ではクロージャはどのように実装されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。