Cierres
Desliza para mostrar el menú
Clausuras vs. Funciones Anidadas
Una función anidada es cualquier función que se define dentro de otra función. Las funciones anidadas son útiles para organizar el código y limitar el alcance de las funciones auxiliares. Sin embargo, no todas las funciones anidadas son clausuras.
Una clausura es un tipo especial de función anidada. Las clausuras son funciones anidadas que "recuerdan" y pueden acceder a variables del ámbito de la función que las contiene, incluso después de que la función externa haya terminado de ejecutarse. Esto significa que las clausuras pueden mantener un estado a través de múltiples llamadas.
Puntos clave:
- Todas las clausuras son funciones anidadas;
- No todas las funciones anidadas son clausuras;
- Una función anidada se convierte en clausura solo si utiliza variables del ámbito de la función externa y esas variables siguen siendo accesibles después de que la función externa haya retornado.
Esta distinción es importante para comprender cómo Python gestiona el alcance de las variables y cómo se pueden usar las clausuras para encapsular estado y comportamiento juntos.
12345678910def 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())
Cuando se llama a make_greeter("Alice"), Python crea una nueva función greet que recuerda el valor de name como "Alice". Aunque make_greeter termina su ejecución, la función greet retornada aún tiene acceso a la variable name de su ámbito original. Por eso, al llamar a greeter() se imprime Hello, Alice!, y al llamar a another_greeter() se imprime Hello, Bob!. Cada clausura mantiene su propia copia de las variables que necesita.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla