「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ネストされた機能とPythonの閉鎖の違いは何ですか

ネストされた機能とPythonの閉鎖の違いは何ですか

2025-06-15に投稿されました
ブラウズ:156

What\'s the Difference Between Nested Functions and Closures in Python?

ネストされた関数とpython

の閉鎖と閉鎖は、表面的に閉鎖に似ている一方で、キー差のために根本的に異なります:

[非閉ざされた

Pythonのネストされた関数は、以下の要件を満たしていないため閉鎖とは見なされません:
  • は、それらは、エンクルの外側に実行される場合、

に実行された場合、スコープをエンクしているスコープに焦点を当てている変数にアクセスしません。 make_printer(msg): def Printer(): 印刷(msg) プリンター
def make_printer(msg):
    def printer():
        print(msg)
    return printer
を返すことは、ここで、プリンター関数はmake_printer内のネストされた関数です。

閉鎖定義

閉鎖は、範囲内で定義されていない範囲内で定義されていない変数にアクセスできるようにする関数を維持する関数です。このリファレンスは、囲まれたスコープが終了した後でも維持されます。 Def Printer(MSG = MSG): 印刷(msg) Printer

を返すこの場合、変数MSGはプリンターが作成されたときにデフォルト値にバインドされており、独自の範囲外の変数を参照しません。したがって、それは閉鎖ではありません。クロージャーは、スコープの囲い状態を保持するのに役立ちますが、非閉ざされたネストされた関数は単に語彙範囲内で機能をカプセル化するだけです。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3