Capitolo 7. Le funzioni

7.1. Creare funzioni

Inizierò questo capitolo mostrandovi cosa potreste ma non dovreste fare (quindi non scrivete):

a = 23
b = -23

if a < 0:
    a = -a

if b < 0:
    b = -b

if a == b:
    print "The absolute values of", a,"and",b,"are equal"
else:
    print "The absolute values of a and b are different"
L'output sarebbe:
The absolute values of 23 and 23 are equal
Il programma sembra un po' ripetitivo (e i programmatori odiano ripetere le cose, i computer servono a quello no ??). Fortunatamente Python permette di creare funzioni per rimuovere i duplicati. Ecco l'esempio riscritto:
a = 23
b = -23

def my_abs(num):
    if num < 0:
        num = -num
    return num

if my_abs(a) == my_abs(b):
    print "The absolute values of", a,"and",b,"are equal"
else:
    print "The absolute values of a and b are different"
l'output è:
The absolute values of 23 and -23 are equal
L'elemento chiave di questo programma è l'istruzione def. def (abbreviazione di define, definisci) inizializza la definizione di una funzione. def è seguita dal nome della funzione abs. Poi troviamo una "(" seguita dal parametro num (che viene passato dal programma ad ogni chiamata di funzione). Le istruzioni dopo il ":" vengono eseguite ogni volta che la funzione viene usata dal programma e si possono distinguere dalle normali righe di codice perché sono indentate sotto la funzione. Essa, infatti, finisce quando la tabulazione torna al suo livello o quando incontra return. L'istruzione return ritorna un valore dove è stata chiamata la funzione.

Osservate che i valori a e b non sono cambiati. Le funzioni ovviamente possono essere usate anche per ripetere azioni che non ritornano alcun valore.

Ecco qualche esempio:

def hello():
    print "Hello"

def area(width,height):
    return width*height

def print_welcome(name):
    print "Welcome",name

hello()
hello()

print_welcome("Fred")
w = 4
h = 5
print "width =",w,"height =",h,"area =",area(w,h)
L'output è:
Hello
Hello
Welcome Fred
width = 4 height = 5 area = 20

Questo esempio mostra solamente un po' più in profondità in quanti differenti modi si possono applicare le funzioni. Osservate attentamente, potete anche non dare argomenti ad una funzione così come potete dargliene più d'uno. Osservate anche che return è opzionale.

Le funzioni possono essere usate per eliminare le ripetizioni di codice.