Cierta comprensión de los decoradores de funciones.

En python, a menudo escuchamos/vemos una clase de función A, y hay una marca similar a @xxx antes de la declaración de definición (def) de este tipo de función. Para este tipo de función A, la llamamos función modificada, y para xxx en @ la llamamos decorador de función. (Algunos lugares se traducen como decoradores de funciones )
Esto es lo que vi en los artículos de otros bloggers. Es más vívido, así que lo tomaré prestado. El decorador de funciones es una técnica relativamente útil, pero muchas personas la pasan por alto fácilmente y no se menciona en algunos tutoriales. De hecho, no es difícil, puede maximizar la utilización de los programas existentes y solo necesita cambiar la parte de entrada o salida de la función para realizar algunas funciones que la función original no tiene.
Código específico:

def old_func(func):
    print('我是old_func,我被执行了')
    def mid_func(name):
        print('我是mid_func,我被执行了')
        func(name)
        print('我是mid_func,我又被执行了')
        return None
    return mid_func
# 这里使用修饰器来实现新的函数功能
# 其实等价于: old_func(new_func(name))
@old_func
def new_func(name):
    print('我是{},我被执行了'.format(name))

new_func('被修饰的函数')

La salida es:

我是old_func,我被执行了
我是mid_func,我被执行了
我是被修饰的函数,我被执行了
我是mid_func,我又被执行了

El principio se debe a que los parámetros que pasan las funciones en python no solo pueden ser tipos generales u otros tipos de datos de referencia, sino también la función en sí misma. Después de todo, en python, "todo puede ser un objeto". Después de entender esto, se puede comparar Es bueno entender esto. Por supuesto, es un poco como herencia de funciones.

Supongo que te gusta

Origin blog.csdn.net/onepunch_k/article/details/123991066
Recomendado
Clasificación