ⅩⅥ: emploi

A: préparation de la fonction (fonction du temps effectuée par time.sleep (n) analogique)

import time
def du():
    print("嘟嘟喂嘟嘟")
    time.sleep(2)

Deux: écrire un décorateur, en fonction du temps ainsi que des fonctions statistiques

import time
def run_time(func):
    def inner(*args, **kwargs):
        start = time.time()
        func(*args, **kwargs)
        stop = time.time()
        print('run func\'s time is', stop-start)
    return inner

@run_time
def index(*args, **kwargs):
    time.sleep(1)
    print('welcome index')
index()

Trois: écrire un décorateur, en fonction de fonction, plus certifiée

import time
def inner(func):
    inp_user = input('your name:').strip()
    inp_pwd = input('your password:').strip()
    def file():
        with open(r'db.txt', 'rt', encoding='utf-8') as f:
            for line in f:
                line = line.strip()
                user_dic = eval(line)
                if inp_user == user_dic['name']:
                    if inp_pwd == user_dic['password']:
                        print('login successful')
                        func(inp_user)
                        break
                    else:
                        print('password err')
                        break
            else:
                print('user is not find')
    return file

@inner
def index(name):
    time.sleep(1)
    print('welcome 【%s】' % name)
index()

Quatre: écrire un décorateur pour de multiples fonctions ainsi que la fonction certifiée (à partir du fichier de mot de passe du compte de l'utilisateur) nécessite une connexion est réussie, les fonctions de suivi ne sont plus besoin d'entrer un nom d'utilisateur et mot de passe

Note: lire un fichier à partir du dictionnaire de chaîne peut être utilisée eval ( « { « name »: « egon », « mot de passe »: « 123 »} ») se transformer en un format dictionnaire

Cinq: écrire un décorateur pour plusieurs fonctions ainsi que l'authentification, nécessite une connexion réussie, sans avoir à répéter la connexion dans le délai de temporisation, dépassement du délai d'attente, vous devez vous connecter à nouveau

Six: en option Problème

# 思考题(选做),叠加多个装饰器,加载顺序与运行顺序,可以将上述实现的装饰器叠加起来自己验证一下
# @deco1 # index=deco1(deco2.wrapper的内存地址)
# @deco2 # deco2.wrapper的内存地址=deco2(deco3.wrapper的内存地址)
# @deco3 # deco3.wrapper的内存地址=deco3(index)
# def index():
#     pass

Je suppose que tu aimes

Origine www.cnblogs.com/qujiu/p/12555348.html
conseillé
Classement