⊗pyPmFnNl 21 of 129 menu

Nonlocal-käsky Pythonissa

On tilanteita, joissa ulkoisessa funktiossa on muuttuja, johon sisäisessä funktiossa tarvitaan pääsy. Esitellään funktiossa outer muuttuja i. Sisäiseen funktioon nähden tämä muuttuja on ulkoinen (globaaleja ovat vain ulkoisessa koodissa esitellyt muuttujat). Ja funktiolle inner asetaan yhden lisääminen i:hin:

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

Kuitenkin inner:lle muuttuja i on paikallinen, Python pitää sitä esittelemättömänä ja tulostaa vastaavan virheen. Aikaisemmin tällainen virhe korjattiin global-käskyllä. Kuitenkin tässä i on ulkoinen muuttuja, joten tulisi käyttää nonlocal-käskyä. Se ottaa luetellut muuttujien nimet lähimpään näkyvyysalueeseen, pois lukien globaalin, eli i inner:n sisällä otetaan muuttujasta, joka on esitelty ylempänä kuin tämä funktio:

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

Seuraavassa koodissa eräs ohjelmoija teki virheen:

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

Mikä on vialla tässä koodissa? Etsi ja korjaa koodin tekijän virhe.

Seuraavassa koodissa eräs ohjelmoija teki virheen:

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

Mikä on vialla tässä koodissa? Etsi ja korjaa koodin tekijän virhe.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää