Site icon Meccanismo Complesso

Lezioni di Python – 6.1 Programmazione funzionale

Python Lesson - 6.1 Functional Programming m
Lezioni di Python - 6.1 Programmazione f

La programmazione funzionale

La programmazione funzionale è uno stile di programmazione basato esclusivamente sull’uso delle funzioni.

Un ruolo importante di questo tipo di programmazione lo giocano le funzioni di ordine più alto (higher-order functions). Questo genere di funzioni prendono altre funzioni come argomenti, o restituiscono funzioni.

def incrementa(x):
    return x + 1;

def applica(func, y):
    return func(y)print(applica(incrementa,10)) 

eseguendo

>>>
11

Funzioni pure

La programmazione funzionale si basa sull’uso esclusivo di funzioni pure. Le funzioni pure non hanno effetti collaterali e il valore di ritorno dipende solo dai loro argomenti. (Non si usano variabili esterne alla funzione).

Questo è il modo in cui le funzioni matematiche funzionano, per esempio cos(x) è una funzione pura.

Vediamo due esempi di una funzione pura e una no.

def pura(x,y):
    return x + y
    
lista = []
def nonpura(x):
    lista.append(x) 

L’utilizzo di funzioni pure ha sia vantaggi che svantaggi. Le funzioni pure sono più facili da comprendere e testare, e più efficienti. Infatti il risultato di queste funzioni può essere immagazzinato all’interno di variabili e riutilizzato in seguito senza più richiamare la funzione. Questa tecnica si chiama memoization. Inoltre questo tipo di programmazione si presta bene per il calcolo in parallelo.

Gli svantaggi sono quelli che spesso molte operazioni semplici effettuate da funzioni non pure (pensiamo alla gestione I/O) possono diventare estremamente complesse se implementate con sole funzioni pure.

⇐ Vai a Lezione 5.8 – Alcune funzioni utili per numeri e stringhe

Vai a Lezione 6.2 – Le funzioni Lambda

Exit mobile version