Pas décorateur de référence pratique

# A: fonction d'écriture (fonction du temps réalisé par time.sleep (n) analogique) 
'' '
Importation temps
DEF info ():
heure_début time.time = ()
le time.sleep (. 3)
Imprimer (' Bienvenue roi gloire)
Stop_Time l'time.time = ()
Imprimer ( '% S iS RUN temps '% (Stop_Time-START_TIME))

info ()
' ''
# II: préparation de décorateurs, en fonction du temps ensemble avec des caractéristiques statistiques
' '
importation temps
DEF minuterie (FUNC):
DEF warpper (* args, ** kwargs):
heure_début time.time = ()
RES = FUNC (* args, ** kwargs)
Stop_Time la time.time = ()
Imprimer (' RUN Temps % s « % (Stop_Time - START_TIME))
RES retour
retour warpper
@timer
DEF info ():
temps.sommeil (3)
print ( 'Bienvenue au roi de gloire!)

info ()
'' '
# trois: écrire un décorateur, en fonction de plus de fonction certifiée
' ''
DEF auth (FUNC):
wrapper DEF (* args, ** kwargs) :
name = iNPUT ( 'entrez le nom d'utilisateur:') .strip ()
PWD = iNPUT ( 'entrer le mot de passe de l' utilisateur:') .strip ()
nom de la FI == 'tank' et PWD == '123':
RES = FUNC (* args, ** kwargs)
retour RES
l'autre:
Imprimer ( 'numéro de compte ou mot de passe est incorrect')
retour wrapper

@auth
index DEF ():
impression ( 'succès de certification!)

index ()
' ''
# quatre: l' écriture décorative , une fonction multiple combinée avec la fonction certifiée (du compte du fichier de mot de passe de l'utilisateur) nécessite une connexion est réussie, les fonctions ne sont suivi plus besoin d'entrer un nom d'utilisateur et mot de passe
# note: lire une chaîne à partir d' un fichier de dictionnaire, peut eval ({ "name": "egon","Mot de passe": "123"} ') tour dans un format dictionnaire
' ''
DIC = {}
USER_INFO DEF (FUNC):
DEF warpper (* args, ** kwargs):
avec Open ( 'db.txt', MODE = 'RT' codant pour '8 UTF-.' =) AS F:
dans la ligne F: l'
utilisateur, PWD, balance = line.strip () split ( ':').
DIC [utilisateur] = [PWD, balance]
nom d' utilisateur = iNPUT ( 'entrez le nom d'utilisateur:'). bande ()
de mot de passe = iNPUT ( « entrer utilisateur mot de passe:.) Strip ()
SI nom d' utilisateur et mot de passe == == utilisateur DIC [utilisateur] [0]:
RES = FUNC (* args, ** kwargs)
retour RES
l'autre:
Imprimer ( 'numéro de compte ou mot de passe « )!
warpper retour

DEF InCount ():
( «recharge!) Imprimer

DEF outcount ():
print ( 'fonction de transfert!)
@user_info
utilisateurs DEF ():
le while True:
MSG = " '0': 'exit', '1': 'recharge', '2': 'Transfert'"
Imprimer (MSG)
cmd = INPUT ( « Entrez le numéro de commande >>: « ) .strip () dans le
cas contraire cmd.isdigit ():
Imprimer ( » Vous devez entrer le numéro de commande du numérique « )
la Suite
Elif cmd pas msg:
Imprimer ( » entrez la commande n'existe pas)
l'Continuer
l'autre:
SI cmd == '0':
BREAK
elif cmd == » 1. ':
InCount ()
elif cmd == '2':
outcount ()

utilisateurs ()
'''
# Cinq: écrire un décorateur pour plusieurs fonctions , plus 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
« » '
Temps d' importation
DIC = {}
DEF USER_INFO (FUNC):
DEF warpper (* args, ** kwargs):
avec Open ( 'UTF- 8' 'db.txt', MODE = 'RT', encoding =) AS F:
pour en F ligne:
utilisateur, PWD, équilibre = line.strip () split ( ':').
DIC [utilisateur] = [PWD, balance]
nom d' utilisateur = iNPUT ( 'entrez le nom d'utilisateur:'). bande ()
mot de passe = entrée ( 'entrer le mot de passe de l' utilisateur:') bande ().
SI nom d' utilisateur et mot de passe == == utilisateur DIC [utilisateur] [0]:
RES = FUNC (* args, ** kwargs)
retour RES
l'autre:
Imprimer ( « compte ou mot de passe est incorrect)!
retour wrapper

DEF la minuterie (FUNC):
def wrapper (* args, ** kwargs):
= Time.time start_time ()
RES = FUNC (* args, ** kwargs)
Stop_Time = time.time ()
Temps = Stop_Time - start_time
si le temps <= 1:
retour RES
l'autre:
Imprimer ( « délai de connexion, s'il vous plaît connectez - vous à nouveau! ')
warpper retour

@timer
DEF InCount ():
! Imprimer (' recharge ')

@timer
DEF outcount ():
print ('! fonction de transfert)

@user_info
utilisateurs DEF ():
le while True:
MSG = « '0' : 'exit', '1': 'recharge', '2': 'transfert' "
Imprimer (msg)
cmd = l'entrée ( 'entrez le numéro de commande >>:') .strip () Dans le
cas contraire cmd.isdigit () :
print ( « commande doit être entrée numéro numérique »)
Continuer
Non cmd MSG Elif:
Imprimer ( «commande d'entrée n'existe pas)
Poursuivre
l'autre:
SI cmd == '0':
PAUSE
Elif cmd == » 1' .:
InCount ()
Elif cmd == '2':
outcount () Les

utilisateurs ()
'' '

Je suppose que tu aimes

Origine www.cnblogs.com/0B0S/p/12555089.html
conseillé
Classement