Was bedeutet die Python nonlocal
Anweisung tun (in Python 3.0 und höher)?
Es gibt keine Dokumentation auf der offiziellen Python-Website und help("nonlocal")
funktioniert ebenfalls nicht.
Was bedeutet die Python nonlocal
Anweisung tun (in Python 3.0 und höher)?
Es gibt keine Dokumentation auf der offiziellen Python-Website und help("nonlocal")
funktioniert ebenfalls nicht.
Zitat aus dem Python 3 Referenz :
Die nonlocal-Anweisung bewirkt, dass die aufgelisteten Bezeichner auf zuvor gebundene Variablen im nächstgelegenen umschließenden Bereich mit Ausnahme von globals verweisen.
Wie in der Referenz erwähnt, wird bei mehreren verschachtelten Funktionen nur die Variable in der nächstgelegenen umschließenden Funktion geändert:
def outer():
def inner():
def innermost():
nonlocal x
x = 3
x = 2
innermost()
if x == 3: print('Inner x has been modified')
x = 1
inner()
if x == 3: print('Outer x has been modified')
x = 0
outer()
if x == 3: print('Global x has been modified')
# Inner x has been modified
Die "nächstgelegene" Variable kann mehrere Ebenen entfernt sein:
def outer():
def inner():
def innermost():
nonlocal x
x = 3
innermost()
x = 1
inner()
if x == 3: print('Outer x has been modified')
x = 0
outer()
if x == 3: print('Global x has been modified')
# Outer x has been modified
Es kann sich aber nicht um eine globale Variable handeln:
def outer():
def inner():
def innermost():
nonlocal x
x = 3
innermost()
inner()
x = 0
outer()
if x == 3: print('Global x has been modified')
# SyntaxError: no binding for nonlocal 'x' found
a = 0 #1. global variable with respect to every function in program
def f():
a = 0 #2. nonlocal with respect to function g
def g():
nonlocal a
a=a+1
print("The value of 'a' using nonlocal is ", a)
def h():
global a #3. using global variable
a=a+5
print("The value of a using global is ", a)
def i():
a = 0 #4. variable separated from all others
print("The value of 'a' inside a function is ", a)
g()
h()
i()
print("The value of 'a' global before any function", a)
f()
print("The value of 'a' global after using function f ", a)
Mein persönliches Verständnis der "nonlocal"-Anweisung (und entschuldigen Sie mich, da ich neu in Python und Programmierung im Allgemeinen bin) ist, dass die "nonlocal" ist ein Weg, um die Global-Funktionalität innerhalb von iterierten Funktionen und nicht den Körper des Codes selbst zu verwenden. Eine Global-Anweisung zwischen Funktionen, wenn Sie so wollen.
Mit 'nichtlokalen' inneren Funktionen (d.h. verschachtelten inneren Funktionen) gelesen werden können & ' schreiben. ' Erlaubnis für diese spezifische Variable der äußeren übergeordneten Funktion . Und nonlocal kann nur innerhalb innerer Funktionen verwendet werden z.B.:
a = 10
def Outer(msg):
a = 20
b = 30
def Inner():
c = 50
d = 60
print("MU LCL =",locals())
nonlocal a
a = 100
ans = a+c
print("Hello from Inner",ans)
print("value of a Inner : ",a)
Inner()
print("value of a Outer : ",a)
res = Outer("Hello World")
print(res)
print("value of a Global : ",a)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.