Oh, ragazzi, c'è del codice sullo schermo e sembra terribilmente confuso.
Questo è un esempio di una funzione davvero contorta e complicata che non scriveresti mai, ma andrà bene
per scopi di esercizio.
E stiamo parlando specificamente di questo qui chiamato non locale.
In realtà è una nuova parola chiave in Python tre.
E come puoi vedere, il mio Reppel non se ne accorge nemmeno.
Quindi non è nemmeno evidenziato in blu perché è una nuova funzionalità.
Ma voglio parlarne con te e farti sapere cosa fa.
La parola chiave nonlocal key viene utilizzata per fare riferimento a questa parte, questo parent local.
È un modo per dire, ehi, voglio usare una variabile che non è una variabile globale, ma è al di
fuori dell'ambito della mia funzione.
Quindi, in base a quella definizione, prova a mettere in pausa il video e guarda cosa potrebbe fare questa funzione,
la eseguirò subito e poi esaminerò il codice se faccio clic su Esegui.
Questo è ciò che otteniamo.
Quindi parliamo di questo.
Abbiamo una funzione esterna e quindi chiamiamo la funzione esterna.
Quindi l'interprete Python andrà a dire, va bene, abbiamo una variabile X che è
locale alla funzione esterna.
E poi qui dentro, definiremo una funzione interna, un'altra funzione.
E qui, prima ancora di chiamarlo, siamo saltati alla riga nove e abbiamo detto, va bene, chiama funzione interna.
Torniamo indietro e diciamo, ehi, riga cinque, voglio usare X non locale.
Hmm.
Che cosa significa?
Bene, voglio usare questa variabile X perché non è locale.
Cioè, non voglio creare una nuova variabile X.
Voglio passare al mirino dei miei genitori, vedere il mio genitore locale e prendere qualunque cosa trovi lì dentro.
Finché non è una variabile globale, qualsiasi genitore lo farà.
Voglio prendere quel non locale.
Quindi ora questa X si riferisce alla funzione esterna qui.
Quindi, quando diciamo che X è uguale a non locale, stiamo assegnando questa nuova stringa.
E sostituendo questo local in modo che quando stampiamo interagisce, otteniamo nonlocal, ma anche quando stampiamo
la X esterna, abbiamo modificato questo scope esterno con la parola chiave nonlocal.
Quindi anche questo diventa non locale.
Se rimuovo questa riga e la commentiamo e clicco su Esegui.
Vedete la differenza ora che abbiamo il non locale interno, ma poi il locale esterno non è stato modificato perché
questa è una nuova variabile.
Ancora una volta, sostengo che questo in realtà rende il tuo codice più complicato di quanto dovrebbe essere.
Quindi ci sono casi speciali in cui potresti voler usare questo, ma se puoi provare a rendere
prevedibile il tuo codice, dove puoi evitare di usare cose come non locali e globali, bada bene, sono lì per un
motivo perché sono utili in alcuni situazioni.
Detto questo, tieni a mente, rendi il tuo codice prevedibile, rendi il tuo codice pulito e ci vediamo nel
prossimo video.