Argomento sicuramente molto ben trattato nella manualistica online e scolastica. Ci limitiamo alle generalità ed alcuni dettagli magari più sfiziosi da trovare nei corsi base.
Le funzioni in Python, come tutti i linguaggi di programmazione, sono veri e propri sottoprogrammi che suddividono e scompongono un problema più grande in problemi più piccoli. Le funzioni hanno il grande vantaggio di permettere una gestione del codice più atomica sia per una comprensione migliore, debug più snello, sia per una manutenzione e modifica più semplice.
Indice dei contenuti
Come si dichiara
Essendo Python un linguaggio ad alto livello non tipizzato, le funzioni non hanno un tipo di ritorno ma la loro dichiarazione si limita ad una parola chiave def.
def nomeFunzione(parametro1, parametro2, ...):
"""
Docstring: descrizione della funzione.
"""
# bla bla di codice
return valore
Questa seguita è dal nome della funzione che, non smetterò mai di ricordarlo agli alunni, non deve mai avere parole staccate ma una sola parola che descriva in modo coerente lo scopo della funzione. Potete usare l’italiano o l’inglese, evitate numeri nel nome o elementi che caratterizzano un esempio di uso della funzione stessa. Evitate le lettere accentate, esistono solo in Italia e pochi Paesi.Sono ammessi nome tipo isPari, get_nome, setCognome, con mix di maiuscole e minuscole o il trattino basso. Siate sobri nel nome: se leggete o qualcuno legge il codice il nome deve essere chiaro ed esplicativo.
Al nome seguono i parametri tra parentesi tonde.
Parametri e Argomenti
I parametri sono variabili elencate nella definizione della funzione. Gli argomenti sono i valori passati alla funzione quando viene chiamata. Esistono diversi tipi di parametri in Python, una differenza:
- Parametri Posizionali: i valori vengono passati ai parametri nell’ordine in cui sono definiti nella funzione.
- Parametri Nominali: anche detti Keyword Arguments, i valori di copia vengono passati specificando il nome del parametro. In questo modo il passaggio dei parametri può essere fatto senza l’ordine preciso scelto nella definizione della funzione. Decisamente comodo se i parametri sono molti e alcuni sono addirittura opzionali.
- Parametri di Default: parametri che hanno un valore di default se nessun valore viene passato.
- Passaggio per riferimento: i più complessi da comprendere per gli studenti. Permettono di passare un numero variabile per riferimento, cioè non un valore di copia, ma il contenuto di memoria della variabile chiamante.
- Parametro di ritorno: qui qualche collega salta sulla sedia probabilmente ma no, non è previsto un tipo di ritorno delle funzioni python, proprio perché non è un linguaggio tipizzato. Esiste però una una buona prassi di inserire -> int ovvero un frecciolina e il tipo di ritorno int, chr, float, bool. Non è eseguito a runtime, non è un reale controllo ma è una buona prassi per commentare meglio il proprio codice.
La sezione del def nome parametri tipodiritorno si conclude con il due punti :
Ecco un esempio che mostra l’uso di diversi tipi di parametri:
def sum(addendo1, addendo2) -> int:
return (a + b)
a = int(input('Inserisci il primo numero: '))
b = int(input('Inserisci il secondo numero: '))
print(sum(addendo1=a, addendo2=b))
#così puoi scambiare ordine dei parametri, soprattutto se numerosi
print(sum(addendo2=b,addendo1=a))
print(f'Sum of {a} and {b} is {sum(a, b)}')Funzioni integrate o moduli
Esistono alcune funzioni già integrate nel codice Python, senza bisogno di aggiungere codice per dichiararle. Non è facile fare un elenco perché sono in numero decisamente elevato.
print("testo a piacere") #funzione di stampa
input("messaggio") # variabile = input("Scrivi un saluto")
abs(-26) #valore assoluto
pow(2,3) #esegue la potenza di 2 alla 3, fornendo il risultato 8
min(13,45,3,12) #valore minimo di un elenco di numeri o variabili numeriche
max(3,6,12,5,34) #valore massimo di un elenco di numeri o variabili numeriche
int(34.5) #effettua una conversione di un numero in intero
float(100) #effettua una conversione di un numero in decimale con virgola
str(123) #converte un numero nella stringa di caratteri corrispondente
len() #da la lunghezza ovvero numero di elementi di un vettore o di una stringa
open() #per aprire in lettura/scrittura i file
split() #suddivide una stringa in base a spazi o carattere scelto
join() # il contrario di split, unisce stringhe
append() #aggiunge elementi ad un vettore
pop() #estrae un elemento da una lista vettore
sort() #ordina un vettore
Le funzioni ovviamente hanno dei parametri e delle tecniche che si suggerisce approfondire in altri articoli o guide.
Alcune funzioni non sono integrate ma possono esser aggiunte importando dei moduli, alcuni standard, altri previa installazione sul dispositivo in uso.
I moduli estendono le funzioni utilizzabili nei nostri frammenti di codice. Esistono moduli per funzionalità più disparate e per ogni contesto applicativo, dalla grafica, interfacce GUI, calcolo matematico, videogiochi, ecc Ne mostriamo solo alcuni per scopi didattici che possono tornare utili quindi agli alunni. I moduli vengono in genere installati con pacchetti specifici sui sistemi operativi Linux o con il comando pip che fa riferimento ad una serie di repository non ufficiale ma molto comoda per scaricare librerie comunque di utilità acclarata.
import math
math.sqrt(16) #radice quadrata di un numero diretto o attraverso variabileFunzioni lambda
Python supporta anche funzioni anonime, ovvero non specificatamente dichiarate. Sono conosciute come funzioni lambda. In genere sono funzioni particolarmente semplici scrivibili in una sola riga. specificando la parola chiave lambda.
Ecco un esempio di una funzione lambda che calcola il quadrato di un numero:
quadrato = lambda x: x ** 2
print(quadrato(4)) # Output: 16
Ultima modifica 18 Agosto 2024


