Das Python-Schlüsselwort nonlocal wird verwendet, um die Variable zu erstellen, die sich auf die Variable bezieht, die im nächsten Bereich begrenzt ist. Der Geltungsbereich, an den die Variable gebunden ist, sollte weder global noch lokal sein. In Python folgt die nichtlokale Variable einem anderen Verhalten als die identische Bindung. Sie sucht nach Variablen in einem anderen Bereich. Die nichtlokale Variable wird in der verschachtelten Funktion verwendet. Nichtlokale Variable wird beim Deklarieren der Variablen verwendet.  

Vorteile von nichtlokal:

  • Es hilft beim Zugriff auf die Variable, die sich nicht im selben Bereich befindet.
  • Da es eine Variable auf eine andere Variable verweist, macht es die Variable besser wiederverwendbar und spart Speicherplatz für die neue Variable.

Nachteile von nichtlokal:

  • Die nichtlokale Variable wird nicht mit der globalen und der lokalen Variablen verwendet.
  • Eine nicht lokale Variable wird nicht für eine Variable verwendet, die sich nicht im Verschachtelungsbereich befindet.

Demonstrieren der nichtlokalen Variablen:

Beispiel 1: In diesem Beispiel demonstrieren wir die Arbeit mit nichtlokalen Variablen. Wir erstellen die nonlcoal-Variable und ändern deren Inhalt im verschachtelten Gültigkeitsbereich und beeinflussen den Inhalt der Variablen im oberen Gültigkeitsbereich. 

Python3

# Python code to demonstrait
# nonlocal keyword
  
# Nested function to demonstrait
# nonlocal keyword
  
  
def geek_func():
      
    # local variable to geek_func
    geek_name = "geek"
    # Inner function
  
    def geek_func2():
        
        # Declairing nonlocal variable
        nonlocal geek_name
        geek_name = 'GeekForGeeks'
          
        # Printing our variable
        print(geek_name)
          
    # Calling inner function
    geek_func2()
      
    # Printing local variable
    print(geek_name)
  
geek_func()

Ausgabe: 

GeekForGeeks
GeekForGeeks   

Beispiel 2: In diesem Beispiel sehen wir, was passiert, wenn wir eine nichtlokale Variable erstellen, um auf die globale Variable zu verweisen.

Python3

# Python code to demonstrait
# nonlocal keyword
  
# Nested function to demonstrait
# nonlocal keyword
  
# Declairing variable in global scope
geek_name = 'geekforgeeks'
  
  
def geek_func():
    
    # Defining inner function
    def geek_func2():
        
        # Declairing nonlocal variable
        nonlocal geek_name
        geek_name = 'GeekForGeeks'
          
        # Printing our variable
        print(geek_name)
          
    # Calling inner function
    geek_func2()
      
geek_func()

Ausgabe:

SyntaxError: no binding for nonlocal 'geek_name' found

Die mögliche Anwendung für die nichtlokale Variable besteht darin, auf die Variable eines anderen Bereichs zuzugreifen, ohne eine neue Variable zu erstellen, die auf eine Variable verweist, die kürzlich an sie gebunden wurde. Es gibt viele mögliche Anwendungen von nichtlokalen Schlüsselwörtern. 

Beispiel 3: In diesem Beispiel sehen wir, auf welche nicht lokale Variable verwiesen wird, wenn wir mehrere verschachtelte Funktionen haben und alle eine Variable mit demselben Namen haben.

Python3

# Python code to demonstrait
# nonlocal keyword
  
# Nested function to demonstrait
# nonlocal keyword
def geek_func():
  
    # local variable to geek_func
    geek_name = "geekforgeeks"
  
    # First Inner function
    def geek_func1():
        geek_name = "GeekforGeeks"
  
        # Second Inner function
        def geek_func2():
  
             # Declairing nonlocal variable
            nonlocal geek_name
            geek_name = 'GEEKSFORGEEKS'
  
            # Printing our nonlocal variable
            print(geek_name)
  
       # Calling Second inner function
        geek_func2()
  
        # Calling First inner function
    geek_func1()
  
    # Printing local variable to geek_func
    print(geek_name)
  
geek_func()

Ausgabe: 

GEEKSFORGEEKS
geekforgeeks