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多秒