zoukankan      html  css  js  c++  java
  • day17作业

      1 # 一:编写函数,(函数执行的时间用time.sleep(n)模拟)
      2 import time
      3 def foo(x,y):
      4     time.sleep(2)
      5     print(x,y)
      6 # 二:编写装饰器,为函数加上统计时间的功能
      7 import time
      8 def timmer(func):
      9     def wrapper(*args,**kwargs):
     10         start = time.time()
     11         res = func(*args,**kwargs)
     12         stop = time.time()
     13         print(stop - start)
     14         return res
     15     return wrapper
     16 @timmer
     17 def foo(x,y):
     18     time.sleep(2)
     19     print(x,y)
     20 
     21 foo(1,2)
     22 # 三:编写装饰器,为函数加上认证的功能
     23 def login(func):
     24     def wrapper(*args,**kwargs):
     25         while True:
     26             username = input('请输入账号:').strip()
     27             userpwd = input('请输入密码:').strip()
     28             if username == 'yu' and userpwd != '123':
     29                 print('登陆成功')
     30                 res = func(*args,**kwargs)
     31                 return res
     32             else:
     33                 print('账号错误请重新输入')
     34                 continue
     35     return wrapper
     36 @login
     37 def foo(x,y):
     38     time.sleep(2)
     39     print(x,y)
     40 foo(1,2)
     41 # 四:编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
     42 # 注意:从文件中读出字符串形式的字典,可以用eval('{"name":"egon","password":"123"}')转成字典格式
     43 flag = False
     44 def login(func):
     45     def wrapper(*args,**kwargs):
     46         global flag
     47         if not flag:
     48             with open('account', mode='r',encoding='utf-8') as f:
     49                 data = f.readline()
     50                 dic = eval(data)
     51             while True:
     52                 username = input("username>>>: ").strip()
     53                 password = input("password>>>: ").strip()
     54                 if username == dic['name'] and dic['password'] == password:
     55                     flag = True  # 修改用户登录状态
     56                     print("登陆成功")
     57                     res = func(*args,**kwargs)  # 执行传入的函数
     58                     return res
     59                 else:
     60                     print('账号密码不匹配')
     61                     continue
     62         else:
     63             print('已通过验证')
     64             func(*args,**kwargs)
     65     return wrapper
     66 @login
     67 def foo():
     68     print('hallo world')
     69 @login
     70 def fun(x,y,z):
     71     print(x+y+z)
     72 foo()
     73 fun(1,2,3)
     74 # 五:编写装饰器,为多个函数加上认证功能,要求登录成功一次,在超时时间内无需重复登录,超过了超时时间,则必须重新登录
     75 import time,datetime
     76 user = {'user':None,'start_time':None,'login_time':1}
     77 def login(func):
     78     def wrapper(*args,**kwargs):
     79         if user['user']:
     80             time1 = (datetime.datetime.fromtimestamp(time.time()) - user['start_time']).seconds
     81             if time1 < int(user['login_time']):
     82                 return func(*args, **kwargs)
     83             else:
     84                 print("登录时间过长,请重新登录!")
     85         with open('account', mode='r',encoding='utf-8') as f:
     86             data = f.readline()
     87             dic = eval(data)
     88         while True:
     89             username = input("username>>>: ").strip()
     90             password = input("password>>>: ").strip()
     91 
     92             if username == dic['name'] and dic['password'] == password:
     93                 print("登陆成功")
     94                 user['user'] = username
     95                 user['start_time'] = datetime.datetime.now()
     96                 res = func(*args,**kwargs)  # 执行传入的函数
     97                 return res
     98             else:
     99                 print('账号密码不匹配')
    100                 continue
    101     return wrapper
    102 @login
    103 def foo():
    104     print('hallo world')
    105 @login
    106 def fun(x,y,z):
    107     time.sleep(2)
    108     print(x+y+z)
    109 @login
    110 def func(x,y,z):
    111     time.sleep(6)
    112     print(x+y+z)
    113 foo()
    114 fun(1,2,3)
    115 func(1,2,3)
  • 相关阅读:
    零点存在定理与介值定理
    moco入门
    git的基础操作-入门
    有道笔记链接地址 -----关于python
    Linux学习---linux的svn的配置与安装
    Linux学习---linux系统下安装配置Jenkins
    Linux学习-linux系统下安装jdk和tomcat,以及遇到的问题清单
    Linux学习-linux系统下python升级到python3.6步骤详解,以及遇到的问题解决
    Linux学习---Linux目录结构说明
    电脑屏幕左上角出现一个小的白块
  • 原文地址:https://www.cnblogs.com/yding/p/12555191.html
Copyright © 2011-2022 走看看