Ben tornato.
In questo video voglio parlare di un concetto importante, che è il ritorno.
È una parola chiave in Python che vedremo molto quando lavoreremo con le funzioni.
Quindi diamo un'occhiata.
Se diciamo che voglio creare una funzione chiamata sum, che, tra l'altro, esiste già in Python,
ma creeremo la nostra e dirò numero uno per numero uno.
E numero due, beh, la nostra funzione di somma aggiungerà nove uno più num due, una funzione carina e semplice.
Ora, se eseguo alcuni con il numero quattro e cinque, indovina cosa sta per succedere?
Vado a correre.
E non succede nulla, il che voglio dire, potrebbe non sorprenderti, perché non stiamo stampando nulla, giusto.
Ma cosa succede se eseguo la stampa qui?
Questo cambierà?
Vediamo.
Hmm, non ne ricevo nessuno.
È quello che ti aspettavi e non ne abbiamo mai visti prima.
Giusto, voglio dire, ricordi quando avevamo una lista, diciamo da uno a tre, e poi abbiamo fatto qualcosa
di simile?
Nel nostro Ed, ci ha dato questa piccola freccia e non ha detto nessuna, e abbiamo parlato di questa idea
di elenchi, qualcosa come clear cambia l'elenco effettivo e cancella tutto e svuota l'elenco.
Ma non restituisce un nuovo elenco.
Modifica semplicemente l'elenco esistente, ma invece non ne restituisce nessuno.
Bene, le funzioni sono proprio così.
Devono sempre restituire qualcosa.
E quando non restituiscono nulla come non c'è nessuna parola chiave di ritorno qui, non ne restituisce automaticamente nessuna.
Quindi, se non abbiamo qualcosa come il ritorno qui, non restituirà sempre nulla.
Ma se aggiungiamo il ritorno, dirà non appena arriviamo a, tipo, hey.
Voglio che tu esca da questa funzione e quando esci da questa funzione, voglio che tu restituisca qualunque cosa ci
fornisca questa espressione, se clicco, corro.
ne ho nove.
Se lo cambiamo in 10.
Più cinque, otteniamo 15.
E questa è una buona regola generale con le funzioni, perché le funzioni possono fare due cose, giusto?
Uno, può restituire qualcosa.
Quindi alla fine della funzione, qualunque cosa, dopo che la funzione viene eseguita, restituiamo qualcosa o
Nunn o una sorta di valore, una sorta di tipo di dati, oppure possiamo avere una funzione che non
restituisce nulla ma forse modifica qualcosa.
Quindi, per esempio, potrei stampare.
Ciao.
E se fossi corso qui.
Non ne restituisco nessuno perché non ho quell'istruzione return, tuttavia, la mia funzione fa qualcosa che modifica.
Bene, l'aspetto di questa tassa, giusto, un principe per noi.
Quindi una funzione modifica qualcosa nel nostro programma o restituisce qualcosa.
E questo è un argomento abbastanza avanzato che approfondiremo più
avanti quando parleremo di programmazione funzionale, ma una buona regola pratica con le funzioni è che una funzione dovrebbe fare una cosa davvero bene.
E di solito una funzione dovrebbe restituire qualcosa.
Ora, questo non significa che qualsiasi funzione che forse fa più cose o qualsiasi funzione che non
restituisce qualcosa sia cattiva, ma è generalmente buona pratica rendere il codice semplice e leggibile, per avere queste
due regole.
Ad esempio, qui, se ho stampa e addizione, sarà, questa funzione sta facendo più cose.
Si preoccupa della stampa e si preoccupa anche di qualcosa.
E la definizione di questa funzione è chiamata alcuni.
Voglio dire, se non lo sapessi o non l'ho visto e tutto ciò che ho fatto è stato eseguirne un po', penso che
avere una stampa alta sarebbe sorprendente perché il nome non descrive davvero cosa fa.
Voglio dire, mi aspetto che questo sia un po' di tempo.
Perché il mio programma dice ciao?
Quindi vogliamo assicurarci che la nostra funzione faccia davvero una cosa e solo una cosa?
Bene, perché come vedremo più avanti, possiamo combinare ed eseguire diverse funzioni insieme.
E poi vogliamo anche assicurarci di restituire qualcosa, perché in questo modo, quello che possiamo fare è
assegnare effettivamente questo valore di ritorno a una variabile.
Ad esempio, posso dire che il totale è uguale a circa 10.
Cinque.
E poiché questa funzione restituisce qualcosa e al termine, l'esecuzione avrà 15 come valore, è la stessa cosa di
quello che stiamo facendo qui.
Ed ecco la parte interessante ora che posso correre forse circa 10.
Più totale.
Ora, esaminiamo questo uno per uno.
Definisco la mia funzione, l'interprete Python dirà, va bene, so cosa è ora che
l'hai definito.
Lo terrò in memoria.
Continuerà ad andare avanti, fino alla linea sette.
E dirà, ehi, voglio un totale variabile e voglio che quella variabile totale sia uguale a circa 10
cinque.
E prima ancora di assegnare qualcosa a Total Python, l'interprete dirà qualcosa?
Alcuni di nuovo.
Oh, mi ricordo qui.
È in memoria, ok, ad alcuni gli darò gli argomenti 10 e 5.
Quindi eseguirà quella funzione.
Non appena finiremo questa parentesi di chiusura, andrà al sole.
Dirà, ehi, nessuno sarà uguale a dieci.
Ehi, il numero due sarà uguale a cinque.
Ora andiamo alla riga due e dirà, ehi, voglio che tu aggiunga dieci più cinque perché so cosa sono
queste variabili.
E poi una volta che hai finito e questo diventa 15, voglio che torni.
Quindi l'interprete Python, alla fine, quando ha finito di chiamarne qualcuno, dirà, ehi, assegna il
valore 15 alla variabile total e poi passerà alla riga successiva.
Ehi, voglio stampare qualcosa.
Cosa vuoi stampare?
Bene, voglio stampare questo.
Sta per dire, ehi, quello che so cosa c'è su questo.
Ce l'ho in memoria.
E poi di nuovo, dirà dieci.
E poi l'argomento successivo sarà totale.
Ehi, qual è il totale?
Lasciami andare a memoria e scoprilo.
Oh, sono le 15.
Quindi è come dire 50.
E questo è il potere delle funzioni, giusto, sono in grado di restituire cose e assegnarle a variabili e chiamarle in
questo modo e posso continuare a eseguirle se voglio.
Se voglio renderlo ancora più semplice, posso andare.
Alcuni invece del totale saranno proprio qui.
E guardalo adesso.
Ho tutto in una riga e se clicco su Esegui.
Ancora una volta, funziona ancora.
OK, ma cosa succede se facciamo qualcosa del genere?
E se dico definisci alcuni e poi dico definisci qui dentro un'altra funzione e questa funzione prende il numero
uno e il numero due.
E qui, finalmente, torniamo al numero uno e al numero due.
Hmm, proviamo questo.
Cosa pensi che succederà?
Bene, prima, diciamo che il totale è uguale a circa 10 più 20.
E poi stamperò il totale.
Se clicco, corro.
non ne ottengo nessuno.
Ora, perché è questo e questo dovrebbe essere ovvio per te, perché qui sto dicendo, ehi, voglio che
tu definisca qualcosa e cosa faremo con la funzione?
Un po' bene, qui dentro, definirò un'altra funzione.
Ma questa istruzione return in realtà non viene eseguita.
Giusto, perché tutto ciò che stiamo facendo all'interno di questo blocco, questo blocco di codice.
È questa parte che stiamo definendo la funzione, ma non chiamiamo mai un'altra funzione.
Quindi questo non restituisce nessuno.
E abbiamo perso la capacità di chiamare bene questa funzione.
Quindi come possiamo risolverlo?
Un modo è tornare, giusto?
Quindi alla fine qui, dobbiamo assicurarci che il rientro sia corretto e restituiremo un'altra funzione.
Quindi aggiungiamo il ritorno e vediamo cosa succede qui.
Se clicco, corro.
Va bene, ottengo questa funzione ora, quindi total sarà uguale a questa funzione che abbiamo restituito ed è in
memoria.
OK, ma non ottengo il risultato che desidero, giusto?
E perché?
Perché mentre non chiamiamo questa funzione, ci sono alcuni modi in cui possiamo farlo.
Possiamo dargli i parametri o gli argomenti qui.
Quindi diciamo 10, 20.
E se clicco, corro.
Ottengo 30 o se vogliamo mantenere tutto ciò che gli diamo qui, posso semplicemente dire un altro funk.
Quindi se gli diamo il numero uno e il numero due e clicco su corri.
Ehi, guarda un po', ne ho 30.
Ora, questo video potresti dover guardare più e più volte, perché allunga un po' la tua
mente e, ad essere onesti, questa funzione non è molto buona perché va bene, è molto confusa.
La tua funzione dovrebbe essere facile da capire.
Quindi potremmo voler cambiare un po 'questo, forse invece qui di avere gli stessi nomi di parametro solo
per chiarirlo.
Forse possiamo dire e uno e e due.
E poi eccoci qui.
E uno più e due per chiarire che quando restituiamo quest'altra funzione, sto usando i parametri, numero uno e numero
due che abbiamo chiamato qui.
Perché questa definizione di una funzione non si preoccupa davvero di cosa siano queste cose.
Si preoccupa solo quando viene chiamata un'altra funzione.
Ora, se hai bisogno di mettere in pausa il video e guardare questo e magari esercitarti un
po', è completamente comprensibile.
Ma volevo mostrarti il potere del ritorno.
Puoi avere funzioni annidate proprio come potresti con i condizionali, ma devi stare attento
che la tua funzione restituisca qualcosa, altrimenti non restituirà nessuno.
E la maggior parte delle volte vorrai restituire qualcosa da una funzione in modo che possiamo fare qualcosa
di simile assegnandolo a una variabile in modo da poterlo utilizzare in seguito nei nostri programmi.
Ci vediamo al prossimo entro.
Un'ultima cosa, una parola chiave di ritorno esce automaticamente dalla funzione in modo che qui, se aggiungessi un altro
pezzo di codice come print, ciao?
O forse hanno anche restituito cinque qui, vedi che è ancora valido, ma se eseguo questo.
Ottengo ancora 30 perché l'interprete non arriva mai alla riga cinque e sei, perché non appena restituiamo
qualcosa da una funzione, esce da quella funzione.
E il motivo per cui questa parte non esce dalla funzione è perché, ricorda, all'interno di questa funzione,
stiamo definendo.
Quindi in realtà non stiamo eseguendo questa parte.
Stiamo solo dicendo, ehi, quando vediamo un'altra funzione in arrivo nel nostro codice, sappiamo di cosa si tratta,
ma non la eseguiremo.
Quindi sembrerà questo.
E non appena vede l'istruzione return, quando si raffredda, dirà, va bene,
sto uscendo da questa funzione con questo valore.
Solo un po' di attenzione.