Menu
Coddy logo textTech

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).

challenge icon

Sfida

Facile

Scrivi 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

Esercitati da solo: Compilatore Python online