Closure

A Closure is a function object that remembers values in enclosing scopes even if they are not present in memory.

Wann sollte eine Closure-Funktion verwendet werden?

Es kann eine Alternative zu einer Klasse sein, die nur eine oder wenige Attribute und Methoden besitzt.

def print_msg(msg):
    """Das ist die äußere Funktion."""

    def printer():
        '''Das ist die innere Funktion.'''
        print(msg)

    printer()

# Ausführen der Funktion
print_msg("Hello")
Hello
def print_msg(msg):
    """Das ist die äußere Funktion."""

    def printer():
        '''Das ist die innere Funktion.'''
        print(msg)

    return printer  # Änderung zur ersten Version

another = print_msg("Hello")
another()
Hello
del(print_msg)
another()
Hello
# Der Aufruf von print_msg erzeugt eine Fehlermeldung
# weil die Funktion inzwischen gelöscht worden ist.
# Die Funktion another() ist aber immer noch im Speicher
# präsent.
# print_msg("hello")
# another()

Verschachtelte Klassen

https://www.datacamp.com/community/tutorials/inner-classes-python