Python でのクロージャとデコレータ
3379 ワード
Funciones anidadas
Son funciones que están creadas dentro de otra función
ネストされた関数のトラベスで変数のスコープを追加する形式です.入れ子になった関数を使用すると、その関数をすぐに使用することができなくなります.
Reglas para tener un 閉鎖
Debemos がネストされた関数を使用していません. ネストされた関数は、より優れた有効範囲を参照しています. La función que envuelve la nested debe retornarla también.
例:
El resultado del Closure, lo que se imprime de division_by_3(18) es:
Es una función que recibe como parametro otra función, le añade cosas, y retorna una función diferente.
Aquí la función mayusculas recibe a la función mensaje y en función envoltura (wrapper) la ejecuta agregandole algo má, en este caso applicandole un upper al string texto y la retorna.
Al imprimir mensaje('Cesar') lo que obtenemos al final es
Son funciones que están creadas dentro de otra función
閉鎖
ネストされた関数のトラベスで変数のスコープを追加する形式です.入れ子になった関数を使用すると、その関数をすぐに使用することができなくなります.
Reglas para tener un 閉鎖
例:
def make_division_by(n):
"""
This closure returns a function that returns the division of an x number by n
"""
def division(x):
return x/n
return division
division_by_3 = make_division_by(3)
print(division_by_3(18))
El resultado del Closure, lo que se imprime de division_by_3(18) es:
6.0
デコレータ
Es una función que recibe como parametro otra función, le añade cosas, y retorna una función diferente.
def mayusculas(func):
def envoltura(texto):
return func(texto).upper()
return envoltura
@mayusculas
def mensaje(nombre):
return f'{nombre}, recibiste un mensaje'
print(mensaje('Cesar'))
Aquí la función mayusculas recibe a la función mensaje y en función envoltura (wrapper) la ejecuta agregandole algo má, en este caso applicandole un upper al string texto y la retorna.
Al imprimir mensaje('Cesar') lo que obtenemos al final es
CESAR, RECIBISTE UN MENSAJE
Reference
この問題について(Python でのクロージャとデコレータ), 我々は、より多くの情報をここで見つけました https://dev.to/doritosss/closures-y-decorators-en-python-4e5jテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol