Pitón

Tutorial de cierres de Python

Tutorial de cierres de Python
Un cierre es un método o función interno anidado que reconoce y tiene el privilegio de usar las variables incluso después de que la función externa haya terminado de ejecutarse en el ámbito local en el que se creó. Una variable debe ser de una función o alcance externo y ciertamente no está delimitada en el espacio local que se utilizará. Hay tres características de un cierre de Python, estas son las siguientes:

Función anidada

Primero debes comprender qué es un método anidado. Una función anidada se puede definir como un método especificado dentro de otro método. Las funciones recursivas pueden alcanzar las variables del alcance externo. Para cambiar las variables no locales, las definimos específicamente como no locales a través de palabras clave no locales porque son, por naturaleza, de solo lectura. Entonces, primero, eche un vistazo a la función anidada realizada en Spyder Python 3.

Hemos definido dos funciones: la externa y la interna. En la función externa, hemos declarado una variable con algún valor de texto en ella.

def función_externo ()
msg = 'Hy! Yo soy Aqsa Yasin '

Esta variable se ha impreso en la función interna mediante una declaración de impresión. Luego se devuelve la función interna, que es una función anidada, y después de eso, se ha llamado a la función externa.

def inner_func ()
imprimir (mensaje)
return inner_func ()
inner_func ()

Si no usa la palabra clave return para devolver la función interna, aún devolverá el mismo resultado.

Cuando ejecute este código simple, le devolverá el texto, definido como el valor en la variable 'msg'.

Salida: Hy! Yo soy Aqsa Yasin

Ahora defina el mismo tipo de función anidada sin palabra clave de retorno y variable de paso 'msg' en el parámetro, y obtendrá la misma salida.

Salida: Hola

Función de cierre simple

Use el mismo código, con un pequeño cambio en las dos últimas líneas. Con la cuerda 'Hola', la show_msg () se invocó el método, y el método devuelto se vinculó a la palabra 'otro'. Mientras llama otro(), el texto 'Hola' todavía se recordaba, mientras que el show_msg () el método ya se había ejecutado. Asegúrate de agregar la variable 'msg' dentro de la función exterior.

Cuando ejecute este código, mostrará que la función interna, que es una show(), ha sido asignado a la variable 'otro'.

Producción: .mostrar en 0x0000020CCED4D820>

Simplemente puede imprimir el nombre de una función asignada a la variable 'otro' como:

imprimir (otro.__nombre__)

Producirá el nombre de una función.

Salida: mostrar

Ahora, si desea ejecutar esta variable como una función, como otros métodos, puede hacerlo agregando paréntesis y llamándola así:

otro = show_msg ("Hola")
otro()
otro()

Puedes llamar a esto tantas veces como quieras.

Cuando ejecute este código, mostrará algo como esto:

Producción:

Hola

Hola

Hola

Ahora puede ver que incluso después de finalizar la ejecución de la función externa, la función interna aún recuerda las variables y otras cosas que se crearon o definieron en el espacio local.

Función de cierre mediante parámetros

Ahora, hemos agregado parámetros al pasar una variable en la función externa como:

def show_msg (msg)

El valor pasado al parámetro de función externa se asignará a una variable definida dentro de esta función externa como:

Mensaje = msg

Pase algunos valores de cadena en las variables recién creadas en la última línea, como:

func1 = show_msg ('Hola')
func2 = show_msg ('Hola')

Ahora tienes que llamar a estas funciones así:

func1 ()
func2 ()

Obtendrá el siguiente resultado que se muestra en la imagen del editor de spyder:

Dentro de Python, este proceso, mediante el cual cualquier dato (Hola o Hola para este escenario) se adjunta al script, se denomina Cierre.

Multiplicación simple usando Python Closure

Hemos definido dos funciones. Uno es externo, que tiene un multiplicador definido, y el interno en el que se pasará el valor mientras se llama a la función. En la función externa, hemos declarado una variable con un valor multiplicador definido pasado en ella. Este valor multiplicador 'norte' se ha multiplicado por algún valor 'X' que se pasa en la declaración de impresión a la función interna. Luego se devuelve la función interna, que es una función anidada, y después de eso, las variables se han llamado una tras otra en las declaraciones de impresión.

def out_multiply (n):
def in_multiply (x):
devolver x * n
volver in_multiply

Ahora la nueva variable ha asignado algún valor para pasar en el parámetro de la función externa. Este valor se guardará en la variable 'norte', que es un multiplicador definido en la función externa:

times3 = out_multiply (3)
times5 = out_multiply (5)

A estas variables se les asignarán más valores, que se guardarán en el 'X' variable definida en la función interna que debe multiplicarse por multiplicador 'norte'. Cuando imprimimos la variable nombrada como 'tiempos', una función con algún valor entero 'X' asignado entre paréntesis hará que se multiplique con el valor de la función externa 'norte'.

El primero salida 27 mientras se realiza la declaración de impresión porque la variable 'norte' posee 3 como multiplicador, y hemos dado 9 como otro entero a multiplicar.

imprimir (times3 (9))

El segundo salida 15 mientras se ejecuta la declaración de impresión porque la variable 'norte' posee 3 como multiplicador, y hemos dado 5 como otro entero a multiplicar.

imprimir (veces5 (3))

El último lo hará salida 30 mientras se ejecuta una declaración de impresión porque ha llamado de forma recursiva a veces a la variable de función. La primera vez, los tiempos han 'norte' teniendo 3 como un multiplicador, que se multiplicará a un número entero 2. En la multiplicación, saldrá 6. Ahora, este 6 se usará como un valor, luego se pasará como un argumento a la función variable de tiempos, donde el 'norte' el multiplicador variable es 5. Así que cuando 5 se multiplica por 6 saldrá 30.

imprimir (veces5 (veces3 (2)))

Puedes ver la salida en la consola del editor de Spyder.

Conclusión

Los cierres pueden prohibir el uso de valores globales y tener una forma de ocultación de datos. También podría proporcionar un enfoque orientado a objetos o entidades para el problema. Con suerte, después de seguir esta guía, podrá adquirir los fundamentos del cierre de Python.

Vulkan para usuarios de Linux
Con cada nueva generación de tarjetas gráficas, vemos que los desarrolladores de juegos superan los límites de la fidelidad gráfica y se acercan un pa...
OpenTTD frente a Simutrans
Crear su propia simulación de transporte puede ser divertido, relajante y extremadamente atractivo. Es por eso que debes asegurarte de probar tantos j...
Tutorial de OpenTTD
OpenTTD es uno de los juegos de simulación empresarial más populares que existen. En este juego, necesitas crear un maravilloso negocio de transporte....