‫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.