装饰器
装饰器是闭包的一个应用,我们需要理解一些概念
1、闭包的概念:在一个外函数中定义了一内函数,内函数里运用了外函数的非全局变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。
2、开放封闭原则(面向对象原则核心):软件实体应该是可拓展的,而不可修改的,也就是说对拓展是开放的,对修改是封闭的
实现一个装饰器:
一、#登录场景(无参装饰)
username = 'name'pwd = '123456'def login(func): def fun(): user = input('请输入用户名') pd = input('请输入密码') if username == user and pwd == pd: func() else: print('登录失败') return fun@logindef home(): print('HOME')home()
二、带参装饰
import timedef wait_time(func): def count(*args, **kwargs): start_time = time.time() func(*args, **kwargs) end_time = time.time() print('函数运行时间{:.5f}'.format(end_time - start_time)) return count@wait_timedef add(a, b): time.sleep(3) print(a + b)add(54, 56)@wait_timedef print_a(): time.sleep(2) print('aaaaaaaa')print_a()
来源:https://www.cnblogs.com/yyjiangnan/p/12381557.html