Heim  >  Artikel  >  Backend-Entwicklung  >  Wie werden Abschlüsse in Python implementiert?

Wie werden Abschlüsse in Python implementiert?

WBOY
WBOYOriginal
2023-10-21 10:33:561052Durchsuche

Wie werden Abschlüsse in Python implementiert?

Wie werden Abschlüsse in Python implementiert?

Ein Abschluss ist eine Funktion, die innerhalb einer Funktion definiert ist und sich auf die Variablen der externen Funktion innerhalb der Funktion bezieht. Diese Funktion ermöglicht es der inneren Funktion, auf die Variablen der äußeren Funktion zuzugreifen, und nachdem die äußere Funktion die Ausführung abgeschlossen hat, kann der Abschluss weiterhin auf die Variablen der äußeren Funktion zugreifen und diese bedienen.

Abschlüsse werden in Python durch die folgenden Schritte implementiert:

  1. Definieren Sie eine äußere Funktion und definieren Sie darin eine innere Funktion: Zuerst müssen wir eine innere Funktion innerhalb der äußeren Funktion definieren. Diese innere Funktion ist der Abschluss.

    def outer_function():
     # 定义内部函数
     def inner_function():
         pass
  2. Innere Funktion bezieht sich auf die Variablen der externen Funktion: In der internen Funktion müssen wir auf die Variablen der externen Funktion verweisen. Sie können die Variablen der externen Funktion als Parameter der internen Funktion verwenden oder die Variablen der externen Funktion direkt innerhalb der internen Funktion verwenden.

    def outer_function():
     # 外部函数的变量
     x = 10
     # 定义内部函数
     def inner_function():
         # 引用外部函数的变量
         print(x)
  3. Innere Funktion zurückgeben: In der äußeren Funktion die innere Funktion als Rückgabewert zurückgeben.

    def outer_function():
     # 外部函数的变量
     x = 10
     # 定义内部函数
     def inner_function():
         # 引用外部函数的变量
         print(x)
     # 返回内部函数
     return inner_function
  4. Externe Funktionen aufrufen, um Abschlüsse zu generieren: Abschlüsse durch Aufruf externer Funktionen generieren. Zu diesem Zeitpunkt referenziert die innere Funktion die Variablen der äußeren Funktion und kann weiterhin auf diese Variablen zugreifen und sie bearbeiten, nachdem die äußere Funktion die Ausführung abgeschlossen hat.

    def outer_function():
     # 外部函数的变量
     x = 10
     # 定义内部函数
     def inner_function():
         # 引用外部函数的变量
         print(x)
     # 返回内部函数
     return inner_function
    
    # 调用外部函数,生成闭包
    closure = outer_function()

    Durch die oben genannten Schritte haben wir Schließungen erfolgreich in Python implementiert. An diesem Punkt können wir auf die Variablen der externen Funktion zugreifen und diese bearbeiten, indem wir den Abschluss aufrufen.

    closure()  # 输出:10

    Ein wichtiges Merkmal von Abschlüssen besteht darin, dass der Abschluss nach Abschluss der Ausführung der externen Funktion weiterhin auf die Variablen der externen Funktion zugreifen und diese bedienen kann. Dies liegt daran, dass der Abschluss einen Verweis auf die äußere Funktionsvariable beibehält, anstatt den Wert der Variablen zu kopieren. Daher können wir das Verhalten eines Abschlusses beobachten, indem wir ihn mehrmals aufrufen.

    def outer_function():
     # 外部函数的变量
     x = 10
     # 定义内部函数
     def inner_function():
         # 引用外部函数的变量
         print(x)
     # 返回内部函数
     return inner_function
    
    # 调用外部函数,生成闭包
    closure = outer_function()
    
    closure()  # 输出:10
    
    # 修改外部函数的变量
    outer_function.x = 20
    
    closure()  # 输出:20

    Durch den obigen Code können wir sehen, dass der Abschluss beim Aufruf die Variablen der externen Funktion ausgibt. Selbst nachdem die externe Funktion die Ausführung abgeschlossen hat, kann der Abschluss weiterhin auf die Variablen der externen Funktion zugreifen und diese bedienen.

Die Implementierung des Abschlusses in Python ist einfach und klar. Durch den Mechanismus der Funktionsverschachtelung und der Referenzierung externer Variablen verfügt die Funktion über Speicherfähigkeit und Persistenz. Dies ist einer der Gründe, warum Schließungen in Python weit verbreitet sind.

Das obige ist der detaillierte Inhalt vonWie werden Abschlüsse in Python implementiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn