Accademia:Funzioni
Vai alla navigazione
Vai alla ricerca
Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.
Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template. |
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