Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Chiusure | Ambito delle Variabili, Funzioni Annidate e Closure
Concetti di Programmazione Funzionale in Python

bookChiusure

Scorri per mostrare il menu

Closure vs. Funzioni annidate

Una funzione annidata è qualsiasi funzione definita all'interno di un'altra funzione. Le funzioni annidate sono utili per organizzare il codice e limitare l'ambito delle funzioni di supporto. Tuttavia, non tutte le funzioni annidate sono closure.

Una closure è un tipo speciale di funzione annidata. Le closure sono funzioni annidate che "ricordano" e possono accedere alle variabili dell'ambito della funzione esterna, anche dopo che la funzione esterna ha terminato l'esecuzione. Questo significa che le closure possono mantenere uno stato tra più chiamate.

Punti chiave:

  • Tutte le closure sono funzioni annidate;
  • Non tutte le funzioni annidate sono closure;
  • Una funzione annidata diventa una closure solo se utilizza variabili dell'ambito della funzione esterna e tali variabili sono ancora accessibili dopo che la funzione esterna è stata restituita.

Questa distinzione è importante per comprendere come Python gestisce l'ambito delle variabili e come è possibile utilizzare le closure per incapsulare insieme stato e comportamento.

12345678910
def make_greeter(name): def greet(): return f"Hello, {name}!" return greet greeter = make_greeter("Alice") print(greeter()) another_greeter = make_greeter("Bob") print(another_greeter())
copy

Quando si chiama make_greeter("Alice"), Python crea una nuova funzione greet che ricorda il valore di name come "Alice". Anche se make_greeter termina l'esecuzione, la funzione greet restituita ha ancora accesso alla variabile name dal suo ambito originale. Questo è il motivo per cui chiamando greeter() viene stampato Hello, Alice! e chiamando another_greeter() viene stampato Hello, Bob!. Ogni closure mantiene una propria copia delle variabili di cui ha bisogno.

question mark

Cosa rende una funzione una closure?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 8

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 3. Capitolo 8
some-alt