⊗pyPmFnNl 21 of 129 menu

Nonlocal instruktsioon Pythonis

On juhtumeid, kui välimises funktsioonis on muutuja, millele peab saama juurdepääsu sisemises funktsioonis. Deklareerime funktsioonis outer muutuja i. Sisemise funktsiooni suhtes on see muutuja väline (globaalsed on muutujad, mis on deklareeritud AINULT välimises koodis). Ja funktsioonile inner paneme ühe liitmise i-le:

def outer(): i = 0 def inner(): i += 1 # annab vea inner() return i

Kuid inner jaoks on muutuja i lokaalne, Python peab seda deklareerimata ja annab vastava vea. Varem parandati sellist viga instruktsiooni global abil. Kuid siin on i väline muutuja, seega tuleks kasutada instruktsiooni nonlocal. See võtab loetletud muutujanimed lähimast ulatusest, välistades globaalse, st i inner sees võetakse muutujast, mis on deklareeritud selle funktsiooni kohal:

def outer(): i = 0 def inner(): nonlocal i i += 1 inner() return i print(outer()) # väljastab 1

Järgmises koodis tegi mõni programmeerija vea:

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

Mis selle koodiga on valesti? Leidke ja parandage koodi autorit viga.

Järgmises koodis tegi mõni programmeerija vea:

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

Mis selle koodiga on valesti? Leidke ja parandage koodi autorit viga.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu