-
Decorador
Un decorador es una función que toma otra función y extiende el comportamiento de esta última función sin modificarla explícitamente.
-
Funciones
Una función devuelve un valor basado en los argumentos dados.
-
Objetos de primera clase
En Python, las funciones son objetos de primera clase.
Esto significa que las funciones pueden pasarse y usarse como argumentos, como cualquier otro objeto (sting, int, float, list, etc.).
-
Funciones internas
Las funciones internas son funciones definidas dentro de otras funciones.
-
Devolución de funciones desde funciones
Python también permite usar funciones como valores de retorno.
La función de retorno sin los paréntesis, lo que significa que está devolviendo una referencia a la función que devolvió.
-
Decoradores simples
def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper def say_whee(): print("Whee!") say_whee = my_decorator(say_whee)
Los decoradores envuelven una función, modificando su comportamiento.
-
Azúcar sintáctica
El formato anterior es un poco torpe.
Python le permite usar decoradores de una manera más simple con el
@
símbolo, a veces llamado sintaxis de "tarta".El siguiente ejemplo hace exactamente lo mismo que el primer ejemplo de decorador:
def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print("Something is happening after the function is called.") return wrapper @my_decorator def say_whee(): print('Whee!')
-
Reutilización de decoradores
Un decorador es solo una función normal de Python.
Se puede importar a otros archivos.
def do_twice(func): def wrapper_do_twice(*args, **kwargs): # 输入参数 func(*args, **kwargs) return func(*args, **kwargs) # return values return wrapper_do_twice
Para mantener la información por introspección:
import functools def do_twice(func): @functools.wraps(func) # def wrapper_do_twice(*args, **kwargs): func(*args, **kwargs) return func(*args, **kwargs) return wrapper_do_twice
-
Decoradores de lujo
-
Clases de decoración
Decoradores que están empotrados en Python son
@classmethod
,@staticmethod
y@property
.Los decoradores
@classmethod
y@staticmethod
se utilizan para definir métodos en una clase.El
@property
decorador se utiliza para personalizar captadores y definidores para atributos de clase. -
De Liao Xuefeng
El decorador es esencialmente una función de orden superior que devuelve una función.
-
Referencias
Comprensión profunda de los decoradores en Python
Supongo que te gusta
Origin blog.csdn.net/The_Time_Runner/article/details/109171356
Recomendado
Clasificación