Funzioni Python
Una funzione è un blocco di codice che viene eseguito solo quando viene chiamata.
È possibile passare dati, noti come parametri, in una funzione.
Una funzione può restituire dati come risultato.
Creazione di una funzione
In Python una funzione è definita usando la parola chiave def :
Esempio
def my_function():
print("Hello from a function")
Chiamare una funzione
Per chiamare una funzione, utilizzare il nome della funzione seguito da parentesi:
Esempio
def my_function():
print("Hello from a function")
my_function()
argomenti
Le informazioni possono essere passate in funzioni come argomenti.
Gli argomenti sono specificati dopo il nome della funzione, tra parentesi. Puoi aggiungere tutti gli argomenti che vuoi, separandoli semplicemente con una virgola.
L'esempio seguente ha una funzione con un argomento (fname). Quando la funzione viene chiamata, si passa un nome, che viene utilizzato all'interno della funzione per stampare il nome completo:
Esempio
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Gli argomenti sono spesso abbreviati in args nelle documentazioni Python.
Parametri o argomenti?
I termini parametro e argomento possono essere usati per la stessa cosa: informazioni che vengono passate in una funzione.
Dal punto di vista di una funzione:
Un parametro è la variabile elencata tra parentesi nella definizione della funzione.
Un argomento è il valore che viene inviato alla funzione quando viene chiamata.
Numero di argomenti
Per impostazione predefinita, una funzione deve essere chiamata con il numero corretto di argomenti. Ciò significa che se la tua funzione prevede 2 argomenti, devi chiamare la funzione con 2 argomenti, non di più e non di meno.
Esempio
Questa funzione prevede 2 argomenti e ottiene 2 argomenti:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Esempio
Questa funzione prevede 2 argomenti, ma ne ottiene solo 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
Argomenti arbitrari, *args
Se non sai quanti argomenti verranno passati nella tua funzione, aggiungi a *
prima del nome del parametro nella definizione della funzione.
In questo modo la funzione riceverà una tupla di argomenti e potrà accedere agli elementi di conseguenza:
Esempio
Se il numero di argomenti è sconosciuto, aggiungere a *
prima del nome del parametro:
def my_function(*kids):
print("The youngest child
is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Gli argomenti arbitrari sono spesso abbreviati in *args nelle documentazioni Python.
Argomenti di parole chiave
Puoi anche inviare argomenti con la sintassi chiave = valore .
In questo modo l'ordine degli argomenti non ha importanza.
Esempio
def my_function(child3, child2, child1):
print("The youngest child
is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
La frase Keyword Arguments è spesso abbreviata in kwargs nelle documentazioni Python.
Argomenti di parole chiave arbitrarie, **kwargs
Se non sai quanti argomenti chiave verranno passati nella tua funzione, aggiungi due asterischi: **
prima del nome del parametro nella definizione della funzione.
In questo modo la funzione riceverà un dizionario di argomenti e potrà accedere agli elementi di conseguenza:
Esempio
Se il numero di argomenti della parola chiave è sconosciuto, aggiungi un double
**
prima del nome del parametro:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
Gli argomenti arbitrari di Kword sono spesso abbreviati in **kwargs nelle documentazioni Python.
Valore parametro predefinito
L'esempio seguente mostra come utilizzare un valore di parametro predefinito.
Se chiamiamo la funzione senza argomento, utilizza il valore predefinito:
Esempio
def my_function(country = "Norway"):
print("I am from " +
country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Passare una lista come argomento
Puoi inviare qualsiasi tipo di dati di argomento a una funzione (stringa, numero, elenco, dizionario ecc.) e verrà trattato come lo stesso tipo di dati all'interno della funzione.
Ad esempio, se invii un elenco come argomento, sarà ancora un elenco quando raggiunge la funzione:
Esempio
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
Valori di ritorno
Per consentire a una funzione di restituire un valore, utilizzare l' return
istruzione:
Esempio
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
La dichiarazione di passaggio
function
le definizioni non possono essere vuote, ma se per qualche motivo hai una function
definizione senza contenuto, inserisci l' pass
istruzione per evitare di ottenere un errore.
Esempio
def myfunction():
pass
ricorsione
Python accetta anche la ricorsione delle funzioni, il che significa che una funzione definita può chiamare se stessa.
La ricorsione è un concetto matematico e di programmazione comune. Significa che una funzione chiama se stessa. Questo ha il vantaggio di significare che puoi scorrere i dati per raggiungere un risultato.
Lo sviluppatore dovrebbe prestare molta attenzione con la ricorsione in quanto può essere abbastanza facile inserire nella scrittura una funzione che non termina mai o una che utilizza quantità eccessive di memoria o potenza del processore. Tuttavia, se scritta correttamente, la ricorsione può essere un approccio alla programmazione molto efficiente e matematicamente elegante.
In questo esempio, tri_recursion() è una funzione che abbiamo definito per chiamare se stessa ("recurse"). Usiamo la variabile k come dati, che decrementa ( -1 ) ogni volta che ricorriamo. La ricorsione termina quando la condizione non è maggiore di 0 (cioè quando è 0).
Per un nuovo sviluppatore può volerci del tempo per capire come funziona esattamente, il modo migliore per scoprirlo è testarlo e modificarlo.
Esempio
Esempio di ricorsione
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(6)