Accademia:Funzioni
Definire una funzione
Vediamo ora, come possiamo creare una nostra funzione.
Per prima cosa diamo una letta alla [bibbia].
#! /usr/bin/env python3.1 def stampa(): # definisco la funzione """ questa funzione non ha parametri e non fa altro che stampare un messaggio """ print(" Ti parlo dall'interno della funzione! ") stampa() # chiamo (invoco) la funzione
Output
- Ti parlo dall'interno della funzione!
#! /usr/bin/env python3.1 def stampa(a): """ stampa il parametro passatole """ print(" Mi hai passato : {}".format(a)) stampa("parametro")
- Mi hai passato : parametro
Funzioni più complesse
separa.py
#! /usr/bin/env python3.1 # passo un numero qualsiasi di parametri, definendo un separatore def separa(*args,sep=' '): return sep.join(args) print( separa('we','ciao','come','stai','?') )
- we ciao come stai ?
reg.py
#! /usr/bin/env python3.1 """When a final formal parameter of the form **name is present, it receives a dictionary (see Mapping Types — dict) containing all keyword arguments except for those corresponding to a formal parameter. This may be combined with a formal parameter of the form *name (described in the next subsection) which receives a tuple containing the positional arguments beyond the formal parameter list. (*name must occur before **name.) For example, if we define a function like this: """ def reg(tipo,*nomi,**campi): print("\n\n Hai scelto una registrazione di tipo: {0}".format(tipo)) # primo parametro print(" Parametri : ",end=' ') for i in nomi: print(i, end=', ') # stampa la tupla di parametri nomi print("\n {0} \n\t Dati utente: ".format("-"*30) ) k = sorted(campi.keys()) # ordina le chiavi per nome for kw in k: # e stampale a fianco dei loro valori print("{0} : {1}".format(kw,campi[kw])) reg('hosting', 'www.python.com', '1 year', user='Alessandro', email='tuxerrante@boh.it', pas='1234') reg('Fast Food','Il re dei paninazzi','pranzo',name='Gino',surname='Score',time='6 months')
- Output
Hai scelto una registrazione di tipo: hosting Parametri : www.python.com, 1 year, ------------------------------ Dati utente: email : tuxerrante@boh.it pas : 1234 user : Alessandro Hai scelto una registrazione di tipo: Fast Food Parametri : Il re dei paninazzi, pranzo, ------------------------------ Dati utente: name : Gino surname : Score time : 6 months
check.py
#! /usr/bin/env python3.1 """ gestione parametri preassegnati """ print() def checkOk (prompt, tent=3, msg="Yes o No per favore!"): while True: ok = input (prompt) # x in s : True if an item of s is equal to x, else False if ok.lower() in ('y','yes'): # se la risposta, trasformata in minuscolo, è tra 'y' o 'yes' return True # restituisce vero elif ok.lower() in ('n','no'): return False # risposta sbagliata print(msg) tent-=1 if tent<=0: raise IOError (' impara a usare una tastiera!!') checkOk(" Rispondi con un 'yes' o un 'no' : ")
- Out
Rispondi con un 'yes' o un 'no' : B Yes o No per favore! Rispondi con un 'yes' o un 'no' : Z Yes o No per favore! Rispondi con un 'yes' o un 'no' : U Yes o No per favore! Traceback (most recent call last): File "fib.py", line 57, in <module> checkOk(" Rispondi con un 'yes' o un 'no' : ") File "fib.py", line 55, in checkOk raise IOError (' impara a usare una tastiera!!') IOError: impara a usare una tastiera!!
Rispondi con un 'yes' o un 'no' : Y ------------------ (program exited with code: 0) Press return to continue