Un programma può diventare molto lungo e complesso (si perde il controllo…)
1 2 3 4 5 6 7 8 |
istruzione_1 istruzione_2 istruzione_3 ... istruzione_100 ... istruzione_1000 ... |
Per migliorare la leggibilità si ricorre comunemente a delle linee vuote e ai commenti
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#-------------- attività 1... att_1_1 att_1_2 ... att_1_n1 #-------------- attività 2... att_2_1 att_2_2 ... att_2_n2 #-------------- attività 3... att_3_1 att_3_2 ... att_3_n3 |
Una parte di codice diventa una funzione se
- è riconoscibile (svolge un compito specifico)
- si ripete più volte nello stesso progetto
- è troppo lunga (più di 20/30 righe?)
- vogliamo utilizzarla in un altro progetto
- vogliamo condividerla
- …
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
def attività_1(): att_1_1 att_2_1 ... att_1_n1 def attività_2(): att_2_1 att_2_2 ... att_2_n2 def attività_3() att_3_1 att_3_2 ... att_3_n3 |
Per passare il controllo a una funzione è necessario chiamarla.
Dopo l’esecuzione dell’ultima istruzione all’interno della funzione il controllo ritorna alla prima istruzione successiva alla chiamata.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
def attività_1(): att_1_1 att_1_2 ... att_1_n1 def attività_2(): att_2_1 att_2_2 ... att_2_n2 def attività_3() att_3_1 att_3_2 ... att_3_n3 attività_1() attività_2() attività_3() |
Il blocco principale non ha l’esclusiva di fare le chiamate, ogni funzione può chiamare qualsiasi funzione

1 2 3 4 5 6 7 8 9 10 11 12 |
def attività_1(): ... ... ... def attività_2(): ... attività_1 ... attività_1() attività_2() |