Python sin decorador de parámetros fijos

Que es un decorador

Los decoradores de Python (decoradores funcionales) es una función que se usa para expandir las funciones de la función original. El propósito es agregar nuevas funciones a la función sin cambiar el nombre de la función original (o el nombre de la clase). 
La característica especial de esta función es que su valor de retorno también es una función, esta función es una función con la función "original" incrustada.

El decorador es en realidad una función de cierre, es una función con dos capas, tiene la función de pasar parámetros.

 

Escenarios de uso del decorador

Cuando hay bloques de código similares en varios lugares, y estos códigos no están directamente relacionados con el negocio principal, pueden ser reemplazados por decoradores. Los decoradores no solo pueden reducir la cantidad de código, sino también hacer que la lógica del código sea más clara y legible. Solo necesita concentrarse en el procesamiento de la lógica empresarial.

 

Orden de llamada del decorador

Los decoradores se pueden usar en pilas, entonces, ¿cuál es el orden del código después de usar decoradores?
Para el azúcar sintáctico "@" en Python, el orden de llamada de los decoradores es opuesto al orden de declaración usando el azúcar sintáctico "@".

 

Decoradores ordinarios usados ​​en Python

Primero, repasemos el decorador ordinario, que es un decorador que consume mucho tiempo y se usa para calcular la ejecución de funciones.

import time
def waste_time(func): 
    def function(*args,**kwargs):
        start_time=time.time()
        result=func(*args,**kwargs)
        end_time=time.time()
        spend=end_time-start_time
        print("函数%s 总共耗时%.3f秒:"%(func.__name__,spend))
        return result
    return function

El decorador con parámetros solo necesita poner una función en la capa más externa sobre la base del decorador original sin parámetros, definir un parámetro en la función y luego hacer referencia al parámetro en la función anidada para lograrlo.

 

No se utiliza un decorador de parámetros fijos en Python

Echemos un vistazo al decorador con parámetros. Este decorador puede procesar diferentes lógicas pasando los parámetros:

def decorator_have_args(arg):
    def function_out(function):
        def function_in(*args,**kwargs):
            print("the log is:%s"%arg)
            print("call %s()"%function.__name__)
            print("args={}".format(*args))
            # print("kwargs={}".format(**kwargs))
            if(arg=="flag1"):
                function(*args,**kwargs)
            elif(arg=="flag2"):
                for i in range(3):
                    function(*args,**kwargs)
            else:
                print("pass")
        return function_in
    return function_out

@decorator_have_args("flag1")
def testa(a):
    print("this is testa funcion,a=%s"%a)

@decorator_have_args("flag2")
def testb(b):
    print("this is testb funcion,b=%s"%b)

@decorator_have_args("flagx")
def testc(c):
    print("this is testb funcion,b=%s"%c)

if __name__ == '__main__':
    testa("good")
    testb("better")
    testc("best")

 

para resumir

El intercambio de hoy es: Cómo usar decoradores sin parámetros fijos en Python para hacer que la estructura del código y la lógica sean más claras, así como la implementación específica de Python. Los amigos pueden consultar los fragmentos de código anteriores, y ejecutar el código será más útil para comprender el principio de ejecución del decorador.

Bienvenido a prestar atención a la cuenta pública de [The Way of Infinite Testing], responder a [recibir recursos],
recursos de aprendizaje de programación de Python productos secos, automatización de la interfaz de usuario de la aplicación del marco Python + Appium , automatización de la interfaz de usuario web del marco Python + Selenium, API del marco Python + Unittest automatización,


Los recursos y códigos se envían gratis ~
Hay un código QR de la cuenta oficial en la parte inferior del artículo, puede escanearlo en WeChat y seguirlo.

Observaciones: Mi cuenta pública personal se ha abierto oficialmente, dedicada al intercambio de tecnología de prueba, que incluye: pruebas de big data, pruebas funcionales, desarrollo de pruebas, automatización de la interfaz API, operación y mantenimiento de pruebas, pruebas de automatización de la interfaz de usuario, etc., búsqueda pública de WeChat cuenta: "Wuliang The Way of Testing", o escanee el código QR a continuación:

 ¡Presta atención y crezcamos juntos!

Supongo que te gusta

Origin blog.csdn.net/weixin_41754309/article/details/113432760
Recomendado
Clasificación