装饰器

限于喜欢 提交于 2020-02-29 09:38:04

装饰器

装饰器是闭包的一个应用,我们需要理解一些概念

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()

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!