⊗pyPmFnNl 21 of 129 menu

De nonlocal-instructie in Python

Er zijn gevallen waarin in een buitenste functie een variabele aanwezig is, waartoe toegang nodig is in de binnenste functie. Laten we in de functie outer de variabele i declareren. Ten opzichte van de binnenste functie is deze variabele een niet-globale variabele (globaal zijn alleen variabelen die worden gedeclareerd in de buitenste code). En aan de functie inner geven we de opdracht om i met één te verhogen:

def outer(): i = 0 def inner(): i += 1 # geeft een fout inner() return i

Voor inner is de variabele i echter een lokale variabele, Python beschouwt deze als ongedeclareerd en geeft een bijbehorende foutmelding. Vroeger werd een dergelijke fout gecorrigeerd met behulp van de instructie global. Echter, hier is i een niet-globale variabele, dus moet de instructie nonlocal worden gebruikt. Deze neemt de opgesomde variabelenamen in de dichtstbijzijnde scope, exclusief de globale, d.w.z. i binnen inner wordt overgenomen van de variabele die boven deze functie is gedeclareerd:

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

In de volgende code heeft een programmeur een fout gemaakt:

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

Wat is er mis met deze code? Vind en herstel de fout van de auteur van de code.

In de volgende code heeft een programmeur een fout gemaakt:

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

Wat is er mis met deze code? Vind en herstel de fout van de auteur van de code.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren