étape détaillée par le décorateur étape

Décorateur (décorateurs) est une partie importante de Python. Autrement dit: ils sont modifiés capacités fonctionnelles d'autres fonctions. Ils contribuent à rendre notre code plus court et plus Pythonic.

Écrivons une fonction simple, comme la recherche d'un nombre premier.

def is_prime(num):
    if num < 2:
        return False
    elif num == 2:
        return True
    else:
        for i in range(2,num):
            if num%i == 0:
                return False
        return True

Maintenant, nous allons écrire une fonction qui génère des nombres premiers

def prime_nums():
    for i in range(2,10000):
        if is_prime(i):
            print(i)

Is_prime en appelant la fonction, déterminé nombre premier entre 2 et 10 000.

Si nous voulons compter le temps nécessaire à cette fonction, nous devons utiliser le temps de calcul module de temps.

def prime_nums(maxnum):
    start = time.time()
    for i in range(2,maxnum):
        if is_prime(i):
            print(i)
    end = time.time()
    result = end-start
    print(result)

Afin que nous puissions connaître la fin de cette fonction de base de la façon dont long terme,
Insérer ici l'image Description
si nous avons beaucoup de besoin pour une telle fonction pour calculer le temps d' exécution, nous ne pouvons pas avoir chacun une fonction comme celui - ci pour écrire à nouveau time.time (), puis décorateurs de python sur il a joué un rôle très pratique.

On calcule le temps d'écrire un décorateur

def display_time(func):
    def wapper():
        t1 = time.time()
        func()
        t2 = time.time()
        print(t2 - t1)
    return wapper

func DISPLAY_TIME paramètres de la fonction que nous avons besoin d'utiliser une fonction de décorateur, qui est la fonction func comme paramètre passé à la DISPLAY_TIME cette fonction.
Ensuite , appelez cette fonction passée dans Wapper cette fonction.


@display_time
def prime_nums():
    for i in range(2,10000):
        if is_prime(i):
            print(i)

Plus @ décorateur sur la fonction nécessite l'utilisation d'un décorateur, vous pouvez utiliser la fonction décorateur.
Nous courons une fois de plus
Insérer ici l'image Description
vous pouvez voir essentiellement la même efficacité, notre fonction de calcul est également atteint.

Si nous voulons déterminer la fonction du nombre de nombres premiers nombres premiers, et retourne une valeur, décorateur comment modifier.

@display_time
def prime_nums():
    count = 0
    for i in range(2,10000):
        if is_prime(i):
            print(i)
            count += 1
    return count

Parce que la fonction de retour, le décorateur avec une variable doit recevoir la page.

def display_time(func):
    def wapper():
        t1 = time.time()
        result = func()
        t2 = time.time()
        print(t2 - t1)
        return result
    return wapper

Si la fonction a besoin de passer des paramètres, il

@display_time
def prime_nums(maxnum):
    count = 0
    for i in range(2,maxnum):
        if is_prime(i):
            print(i)
            count += 1
    return count

Nous pouvons utiliser les * args fonction de réception.

def display_time(func):
    def wapper(*args):
        t1 = time.time()
        result = func(*args)
        t2 = time.time()
        print(t2 - t1)
        return result
    return wapper

Insérer ici l'image Description
Enfin, appelez la fonction, conformément aux résultats obtenus avec nos besoins.

Publié 73 articles originaux · louange gagné 47 · vues 70000 +

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43870646/article/details/104654612
conseillé
Classement