6.

现有以下函数,利用装饰器为此函数加上认证功能,也就是只有用户名为'python', 密码为'123'才能调用此函数,否则不允许

def my_log(name):

  print('%s欢迎登陆'%(name))

1 import functools
  2 
  3 def decorator(l):
  4     @functools.wraps(l)
  5     def wrapper(*a, **k):
  6         global uesr
  7         passwd = (input('请输入密码: '))
  8         if user == 'python' and passwd == '123':
  9             l(*a, **k)
 10         else:
 11             print('错误')
 12     return wrapper
 13 
 14 
 15 @decorator
 16 def my_log(name):
 17     print('%s欢迎登陆:'%(name))
 18     
 19 user = (input('请输入用户名:'))
 20 my_log(user)

7.利用装饰器为函数加上统计执行时间的功能。

  提示 time模块中的time()函数可以获取当前时间

 1 import time
  2 import functools
  3 def decorator(t):
  4     @functools.wraps(t)
  5     def wrapper (*aa,**kw):
  6         x = time.time()
  7         print(x)
  8         t(*aa,**kw)
  9         y = time.time()
 10         print(y)
 11         print('运行程序一共消耗了{}秒'.format(y - x))
 12     return wrapper
 13 
 14 
 15 @decorator
 16 def test():
 17     a = 0
 18     for i in range(100):
 19         for y in range(100):
 20             for z in range(300):
 21                 a += 1
 22                 print(a)
 23 test()

写了一个由1计数到3000000的函数,共用时10多秒

 

posted on 2018-12-12 18:57  学生1252485815  阅读(104)  评论(0编辑  收藏  举报