Abbiamo già lavorato con le funzioni in Python. In effetti, il nostro primo programma ha già utilizzato una funzione. print() è in realtà una funzione. min(), max(), input(), sorted(), e tutti gli altri comandi con le parentesi tonde sono tutte funzioni.
Le funzioni eseguono diversi comandi e in alcuni casi restituiscono un risultato. min() calcola il minimo tra diversi valori e restituisce quel valore. print(), d'altra parte, stampa un valore in output.
Le funzioni sono particolarmente utili per eliminare codice ripetitivo. Possiamo anche definire le nostre funzioni personalizzate. Immagina di voler stampare un certo oggetto 3 volte e fare qualcos'altro nel mezzo:
Per definire una funzione personalizzata è necessario utilizzare la parola chiave def seguita dal nome della funzione (print_triangle nel nostro caso) che è seguita da () e da : per indicare l'inizio del blocco della funzione. L'elenco dei comandi che la funzione deve eseguire è posto in un blocco indentato all'interno del corpo della funzione.
Entrambi questi programmi eseguono esattamente le stesse operazioni, ma il secondo definisce la parte ripetitiva in una funzione e assicura che il codice non venga copiato e incollato.
Al contrario, il primo ha molte parti copiate e incollate, e nel caso decidessimo di cambiare * con % quando stampiamo un triangolo, sarebbe necessario apportare molte modifiche e passare attraverso ogni riga per effettuare la modifica. Questo può diventare davvero complicato per codebase più grandi ed è molto soggetto a errori.
Sfida
Definisci una funzione che stampa un rettangolo e chiamala 3 volte. I bordi del rettangolo dovrebbero essere composti dal simbolo #, e la parte interna dovrebbe essere vuota.