"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cuál es la diferencia entre funciones anidadas y cierres en Python?

¿Cuál es la diferencia entre funciones anidadas y cierres en Python?

Publicado el 2025-04-30
Navegar:181

What\'s the Difference Between Nested Functions and Closures in Python?

Funciones anidadas vs. cierres en python

mientras las funciones anidadas en Python se asemejan superficialmente a los cierres, son distintos fundamentalmente debido a una diferencia clave: [&] [&]

nested westened financieramente. Las funciones anidadas en Python no se consideran los cierres de CLOSURS

en Python porque no cumplen con el siguiente requisito:

    no acceden a las variables que son locales para que incluyan ámbitos cuando se ejecutan fuera del ámbito. make_printer (msg): impresora def):: Imprimir (MSG) Return Printer
  • Aquí, la función de la impresora es una función anidada dentro de make_printer. Es un cierre porque hace referencia al msg de variable local después de que haya regresado.

Definición de cierre
def make_printer(msg):
    def printer():
        print(msg)
    return printer

Un cierre es una función que mantiene una referencia a un ámbito enclosado, lo que permite que las variables de acceso que no están definidas dentro de su propio alcance. Esta referencia se mantiene incluso después de que se haya salido el alcance de encerrado.

Función anidada sin civil

por otro lado, la siguiente función anidada, que usa un valor de parámetro predeterminado, no es un cierre:

def make_printer (msg):: impresora def (msg = msg): Imprimir (MSG) Impresora return En este caso, el MSG variable está vinculado al valor predeterminado cuando se crea la impresora, y no hace referencia a ninguna variable fuera de su propio alcance. Por lo tanto, no es un cierre.

conclusión
def make_printer(msg):
    def printer():
        print(msg)
    return printer

Las funciones anidadas en Python que no cumplen con la definición de cierre se conocen comúnmente como "funciones anidadas" para distinguirlas de los cierres genuinos. Los cierres pueden ser útiles para retener el estado de encerrar los ámbitos, mientras que las funciones anidadas no cálidas simplemente encapsulan la funcionalidad dentro de un alcance léxico.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3