⊗pyPmFnNl 21 of 129 menu

Die nonlocal-Anweisung in Python

Es gibt Fälle, in denen es in einer äußeren Funktion eine Variable gibt, auf die man in der inneren Funktion zugreifen können muss. Deklarieren wir in der Funktion outer die Variable i. In Bezug auf die innere Funktion wird diese Variable eine äußere sein (global sind nur die Variablen, die AUSSCHLIESSLICH im äußeren Code deklariert sind). Und der Funktion inner weisen wir das Addieren von eins zu i zu:

def outer(): i = 0 def inner(): i += 1 # gibt [4, 9, 25] aus inner() return i

Allerdings ist für inner die Variable i eine lokale Variable, Python betrachtet sie als undeklariert und gibt einen entsprechenden Fehler aus. Früher wurde ein solcher Fehler mit der Anweisung global behoben. Allerdings ist i hier eine äußere Variable, daher sollte die Anweisung nonlocal verwendet werden. Sie nimmt die aufgezählten Namen der Variablen aus dem nächstgelegenen Gültigkeitsbereich, ausschließlich des globalen, d.h. i innerhalb von inner wird von der Variable genommen, die oberhalb dieser Funktion deklariert wurde:

def outer(): i = 0 def inner(): nonlocal i i += 1 inner() return i print(outer()) # gibt 1 aus

Im folgenden Code hat ein gewisser Programmierer einen Fehler gemacht:

num = 10 def outer(): num = 5 def inner(): num -= 2 inner() return num print(outer())

Was ist falsch an diesem Code? Finden und korrigieren Sie den Fehler des Code-Autors.

Im folgenden Code hat ein gewisser Programmierer einen Fehler gemacht:

num = 3 def outer(): num += 1 tst = num def inner(): tst = tst ** 3 inner() return tst print(outer())

Was ist falsch an diesem Code? Finden und korrigieren Sie den Fehler des Code-Autors.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen