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