Funzioni come argomenti
Lezione 3 di 12 del corso Decoratori in Python di Coddy.
In Python, possiamo passare una funzione come argomento a un’altra funzione.
Per esempio,
def add_numbers(a, b):
return a + b
def multiply_numbers(a, b):
return a * b
def calculate(func, a, b):
return func(a, b)
result = calculate(add_numbers, 2, 3)
print(result) # Output: 5
result = calculate(multiply_numbers, 2, 3)
print(result) # Output: 6
In questo esempio, definiamo due funzioni: add_numbers e multiply_numbers.
Definiamo quindi una terza funzione chiamata calculate, che accetta una funzione func come primo argomento, insieme a due argomenti aggiuntivi, a e b.
Quando chiamiamo calculate, passiamo il nome della funzione che vogliamo usare (o add_numbers o multiply_numbers) come argomento func, insieme ai due numeri su cui vogliamo operare.
La funzione calculate chiama quindi la funzione func con i due numeri e restituisce il risultato.
Nell’esempio qui sopra, chiamiamo calculate due volte: una volta con add_numbers e una volta con multiply_numbers.
La prima chiamata restituisce la somma di 2 e 3 (che è 5), mentre la seconda chiamata restituisce il prodotto di 2 e 3 (che è 6).
Sfida
FacileScrivi una funzione chiamata list_operator che accetta come argomenti una lista di numeri interi e una funzione operatore.
La funzione operator deve accettare due numeri interi come input e restituire un singolo numero intero come output.
La funzione list_operator deve applicare la funzione operatore a tutte le coppie di numeri interi adiacenti nella lista e restituire una nuova lista con i risultati.
Ecco un esempio di come dovrebbe funzionare la funzione:
>>> numbers = [1, 2, 3, 4, 5]
>>> result = list_operator(numbers, operator.add)
>>> result
[3, 5, 7, 9]
>>> numbers = [10, 20, 30, 40]
>>> result = list_operator(numbers, operator.mul)
>>> result
[200, 600, 1200]Vincoli
- La lista di input conterrà sempre almeno due numeri interi.
- La funzione operatore accetterà sempre due numeri interi come input e restituirà un singolo numero intero come output.
Nota! La funzione operatore è fornita da noi, non devi crearla, ma solo usarla.
Provalo tu
Tutte le lezioni di Decoratori in Python
1Introduzione
Che cos'è un decoratore?Funzioni annidateFunzioni come argomentiRestituire una funzioneEsercitati da solo: Compilatore Python online