Come creare una funzione in python

Nel linguaggio python posso definire una funzione utilizzando l'istruzione def() ossia define.

La definizione della funzione

def nomefunzione(parametri):
blocco istruzioni
return variabile

L'istruzione def è composta dal nome della funzione che voglio creare, dal blocco delle istruzioni da eseguire.

Il blocco istruzioni deve trovarsi più a destra dell'istruzione def per la regola dell'indentazione.

Come usare gli argomenti della funzione

Gli argomenti della funzione sono parametri opzionali passati durante la chiamata

Se gli argomenti sono più di uno, devono essere separati da una vigola.

def nomefunzione(a,b):

Se, invece, non ci sono argomenti, vanno comunque indicate le parentesi tonde senza nulla dentro.

def nomefunzione():

L'istruzione return restituisce uno o più valori al codice chiamante.

Nota. L'istruzione return e i parametri non sono obbligatori per il funzionamento. Una funzione può essere eseguita anche senza. Tuttavia, il più delle volte occorre usare i parametri e l'istruzione return.

Come chiamare la funzione

Una volta creata, posso richiamare ed eseguire la funzione da qualsiasi altra parte dello script tramite la chiamata nomefunzione().

nomefunzione(argomenti)

Tra le parentesi tonde inserisco gli argomenti ( valori, costanti, variabili ) da passare alla funzione.

Il numero degli argomenti della chiamata deve coincidere con il numero degli argomenti della funzione.

Esempio

media( 2 , voto )

Posso chiamare la stessa funzione più volte da punti diversi del programma, cambiando ogni volta gli argomenti.

Un esempio pratico

In questo codice definisco una funzione media all'inizio del codice.

def media(a,b):
c=(a+b)/2
return c
n1=4
n2=6
m=media(n1,n2)
print(m)

Il programma esegue le funzioni soltanto quando sono chiamate.

In questo caso, il programma comincia l'esecuzione con le assegnazioni n1=4 e n2=6.

Nell'assegnazione della variabile m=media(n1,n2) lo script chiama la funzione media() passandogli come parametri i valori n1 e n2.

il funzionamento della funzione

La funzione riceve i due valori e li salva nelle variabili locali a e b.

Poi calcola e salva la media nella variabile locale c.

Infine, restituisce il valore contenuto nella variabile c tramite l'istruzione return c.

il ritorno del valore della funzione

Il valore di ritorno viene salvato nella variabile globale m.

L'output del programma è il seguente:

5.0

E così via.

A cosa serve la funzione

Le funzioni evitano di scrivere più volte le stesse righe di codice in più parti del programma.

Grazie alla funzione posso scrivere una sola volta la routine.

a cosa serve definire le funzioni in uno script python

Una volta definita posso richiamare la stessa funzione più volte, ogni volta che mi serve, cambiando soltanto gli argomenti in input.

Le variabili nelle funzioni

Le variabili usate in una funzione sono variabili locali.

Quindi, le variabili locali di una funzione esistono soltanto durante l'esecuzione della funzione e non comunicano con il resto del codice.

Un esempio pratico

le variabil locali sono chiuse dentro la funzione

Al di fuori della funzione la variabile locale non è definita.

Nota. Se una variabile locale della funzione ha lo stesso nome di un'altra variabile globale dello script, durante l'esecuzione della funzione prevale la variabile locale ( es. n2 ). Qualsiasi modifica a una variabile globale dentro una funzione, la trasforma automaticamente in variabile locale. Pertanto, il valore della variabile globale non cambia.

Il passaggio dei parametri alla funzione

Posso chiamare una funzione elencando le variabili o le costanti dello script principale che voglio passargli.

media(a,b)
media(2,5)

oppure indicando nella chiamata le assegnazioni dei dati alle variabili locali della funzione (es. n1, n2)

media(n1=2,n2=5)

In entrambi i casi i dati sono acquisiti dalla funzione e memorizzati secondo l'ordine in altrettante variabili locali ossia n1 e n2.

  1. def media(n1,n2):
  2. m=(n1+n2)/2
  3. return m

Il numero dei parametri passati alla funzione durante la chiamata deve coincidere con gli argomenti in entrata della funzione indicati nell'istruzione def.

E se non conosco il numero preciso di argomenti?

Questo problema si risolve facilmente con Python, basta aggiungere il simbolo dell'asterisco * prima del nome dell'argomento.

  1. def prova(*n):
  2. print(n)
  3. return
  4. prova(2,4,5)

La funzione riceve tutti i parametri e li registra in una lista.

(2, 3, 4)

Per passare anche le denominazioni devo usare il doppio asterisco ** prima del nome dell'argomento.

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

In questo caso la funzione riceve tutti i parametri e li registra in un dizionario.

{'a': 2, 'b': 3, 'c': 4}

E così via.

 


 

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

FacebookTwitterLinkedinLinkedin
knowledge base

Le funzioni in python