Python3 avanzado --- decorador

1. Función de decorador:

   Mejorar la función de la función sin modificar la función original

2. Función sin parámetros + decorador sin parámetros

 (1) La función decorada de foo ()

 (2) show_time () es un decorador

# -*- coding:utf-8 -*-
import time


def show_time(func):
    def inner():
        start_time = time.time()
        func()
        end_time = time.time()
        print("执行时间为:", end_time - start_time)

    return inner


@show_time
def foo():
    print("我是foo函数")
    time.sleep(1)


foo()

3. Función con parámetros + decorador sin parámetros

# -*- coding:utf-8 -*-
import time


def show_time(func):
    def inner(*args, **kwargs):
        start_time = time.time()
        func(*args, **kwargs)
        end_time = time.time()
        print("执行时间为:", end_time - start_time)

    return inner


@show_time
def foo(something):
    print("我在:", something)
    time.sleep(1)


foo("看电视")

4. Función con parámetros + decorador con parámetros

# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-
import time


def wrapper(name):
    def show_time(func):
        def inner(*args, **kwargs):
            start_time = time.time()
            func(*args, **kwargs)
            end_time = time.time()
            print(name)
            print("执行时间为:", end_time - start_time)

        return inner

    return show_time


@wrapper("test")  # wrapper("test")(foo)("看电视")
def foo(something):
    print("我在:", something)
    time.sleep(1)


foo("看电视")

 

Explicación adicional:

1. Función:

(1) El nombre de la función se puede utilizar como parámetro

(2) El nombre de la función se puede utilizar como valor de retorno

(3) Se puede asignar un nombre de función

2. Cierre: la función dentro de la función se refiere a la variable del alcance anidado, luego esta función interna se llama cierre (la función interior es un cierre)

   

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_19982677/article/details/108166933
Recomendado
Clasificación