6.

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

def my_log(name):

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

import functools
def decorator(f):
    @functools.wraps(f)
    def wrapper(*arg,**kw):
        n = input('账号')
        m = input('密码')
        if n == 'python' and m == '123':
            return f(*arg,**kw)
           
    return wrapper

@decorator
def my_log(name):
    print('%s欢迎登陆'%(name))
my_log('python')

 

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

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

import functools
import time
def decorator(f):
    @functools.wraps(f)
    def wrapper(*arg,**kw):
        bef = time.time()
        ret = f()
        aft = time.time()
        print('执行的时间是{}'.format(aft-bef))
        return ret
    return wrapper
@decorator
def test():
    print('runing....')
    time.sleep(1)
test()