Ich bin ziemlich verwirrt darüber, wie die Regeln von LEGB hier gelten. I verstehen, dass Local innerhalb einer Funktion oder Klassenmethode, für Beispiel sein kann. Beiliegend kann seine umschließende Funktion sein, z.B. wenn eine Funktion in eine andere Funktion eingeschlossen ist. Global bezieht sich auf die oberste Ebene des ausführenden Skripts selbst, und Built-in sind spezielle Namen , die Python für sich reserviert. Ich verstehe einfach nicht, wie sie sich hier und> warum die Ausgabe ist, was esNamespace - Bereich python
a = 'global'
def outer():
def len(in_var):
print('called my len() function: ')
l = 0
for i in in_var:
l += 1
return l
a = 'local'
def inner():
global len
nonlocal a
a += ' variable'
inner()
print('a is', a)
print(len(a))
outer()
print(len(a))
print('a is', a)
Ausgang
('a is', 'local')
called my len() function:
5
15
('a is', 'global variable')
Ich bekomme unterschiedliche Ausgabe in Python 3.5.2. –