L'istruzione return in python

Nel linguaggio python l'istruzione return mi permette di uscire da una funzione e passare eventualmente il valore di una variabile locale dalla funzione al programma.

return [valore]

L'istruzione return va posta dentro una funzione definita con l'istruzione def.

Può restituire zero, uno o più valori divisi tra loro da una virgola.

A cosa serve?

Una funzione e lo script principale che la invoca operano in ambienti di lavoro diversi.

Per metterli in comunicazione, occorre trasferire i dati dallo script alla funzione e viceversa.

la comunicazione tra la funzione e lo script

La funzione return si occupa di trasferire i dati di ritorno, ossia quelli dalla funzione allo script.

E' obbligatorio usare l'istruzione return? In mancanza di un'istruzione return la funzione termina comunque l'elaborazione dopo l'ultima riga del codice indentato. Tuttavia, se la funzione non termina con l'istruzione return, non restituisce nulla allo script chiamante o, per meglio dire, restituisce il valore None. Lo stesso accade se l'istruzione return è presente alla fine della funzione ma non è seguita da nessun valore o variabile.

Un esempio pratico

Esempio 1

Nel seguente script sviluppo una semplice funzione python.

La funzione ha soltanto un argomento in input (n).

  1. def funzione(n):
  2. if (n%2==0): return 'pari'
  3. if (n%2==1): return 'dispari'
  4. return 'errore'
  5. num=int(input("digita un numero "))
  6. print("il numero è", funzione(num))

Nella riga 5 lo script chiede all'utente di digitare un numero. Poi salva il valore nella variabile num.

Nella riga 6 lo script richiama la funzione passandogli il valore num.

Nota. Nella funzione il valore della variabile num ( argomento ) viene registrato nella variabile locale n.

La funzione divide il numero per due per controllare il resto (n%2).

  • Se il resto della divisione è zero, l'istruzione return restituisce la stringa "pari".
  • Se il resto della divisione è uno, l'istruzione return restituisce la stringa "dispari".

In questo modo, a seconda dei casi la funzione restituisce un valore diverso.

digita un numero 5
il numero è dispari

oppure

digita un numero 8
il numero è pari

E così via.

Esempio 2

In questo script definisco una funzione media() a cui passo due valori in input.

  1. def media(a,b):
  2. c=(a+b)/2
  3. return c
  4. x=1
  5. y=3
  6. print(media(x,y))

Nella riga 6 lo script invoca la funzione media() passandogli i valori delle variabili x e y.

La funzione elabora la media dei due valori e lo assegna alla variabile locale c.

Nota. La variabile locale c esiste soltanto dentro la funzione. Non fa parte dell'ambiente di lavoro dello script principale.


Poi restituisce il valore di c allo script principale tramite l'istruzione return.

L'output del programma è il seguente:

2


E così via.

Come fare a restituire più valori dalla funzione

In python questo problema si risolve facilmente.

L'istruzione return consente di restituire più valori, separati tra loro da una virgola.

return dato1, dato2, dato 3

In questo modo il programma chiamante non riceve un solo valori di ritorno ma diversi valori.

Un esempio pratico

Questa funzione calcola i multipli di un valore.

  1. def multiplo(n):
  2. return n,n*2,n*3
  3. a,b,c=multiplo(3)
  4. print(a,b,c)

Nella riga 4 chiamo la funzione passandogli un valore in input (3).

La funzione calcola tre multipli e li restituisce con l'istruzione return.

Quindi, posso accedere al primo valore in uscita (3) con la variabile a, al secondo valore (6) con la variabile b e al terzo valore (9) con la variabile c.

L'output della funzione è la seguente:

3 6 9

In alternativa, posso memorizzare i valori in uscita in una tupla

  1. def multiplo(n):
  2. return n,n*2,n*3
  3. x=multiplo(3)
  4. print(x[0])
  5. print(x[1])
  6. print(x[2])

In questo caso i valori 3, 6, 9 sono registrati nella tupla x.

Per accedere al primo valore uso x[0], al secondo x[1] e al terzo x[2]

Il risultato in uscita è lo stesso

3
6
9

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Le funzioni in python