⊗pyPmFnNl 21 of 129 menu

Istruzione nonlocal in Python

Ci sono casi in cui in una funzione esterna è presente una variabile a cui è necessario accedere dalla funzione interna. Dichiariamo nella funzione outer la variabile i. Rispetto alla funzione interna, questa variabile sarà esterna (sono globali solo le variabili dichiarate nel codice esterno). E alla funzione inner assegniamo l'aggiunta di uno a i:

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

Tuttavia, per inner la variabile i è locale, Python la considera non dichiarata e restituisce il corrispondente errore. In passato, un errore simile veniva corretto usando l'istruzione global. Tuttavia qui i è una variabile esterna, quindi si dovrebbe usare l'istruzione nonlocal. Prende i nomi elencati delle variabili nell'ambito di visibilità più vicino, escludendo quello globale, cioè i all'interno di inner sarà presa dalla variabile dichiarata sopra questa funzione:

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

Nel codice seguente un programmatore ha commesso un errore:

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

Cosa non va in questo codice? Trovate e correggete l'errore dell'autore del codice.

Nel codice seguente un programmatore ha commesso un errore:

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

Cosa non va in questo codice? Trovate e correggete l'errore dell'autore del codice.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta