博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰器复习
阅读量:7200 次
发布时间:2019-06-29

本文共 1519 字,大约阅读时间需要 5 分钟。

装饰器前奏:

装饰器变形:

(1)第一种变形

(2)第二种变形

(3)第三种变形

(4)第四种变形(正确且标准得装饰器)

装饰器装饰带有参数的函数:

 

带标志位的装饰器:

 

应用场景:例如装饰器是为了测试代码运行时间,但是生产环境上线是需要去掉多余得功能,这时候可以把装饰器标志位改为False即可,避免了频繁的删除操作。

带参数的装饰器:

import timecurrent_login = {'name': None, 'login': False}def timmer(func):    def wrapper(*args, **kwargs):        start_time = time.time()        res = func(*args, **kwargs)  # my_max(1,2)        stop_time = time.time()        print('run time is %s' % (stop_time - start_time))        return res    return wrapperdef auth2(auth_type='file'):    def auth(func):        # print(auth_type)        def wrapper(*args, **kwargs):            if current_login['name'] and current_login['login']:                res = func(*args, **kwargs)                return res            if auth_type == 'file':                name = input('username: ')                password = input('password: ')                if name == 'luchuan' and password == '123':                    print('auth successfull')                    res = func(*args, **kwargs)                    current_login['name'] = name                    current_login['login'] = True                    return res                else:                    print('auth error')            elif auth_type == 'sql':                print('还他妈不会玩')        return wrapper    return auth@timmer@auth2(auth_type='file')  # @auth  #index=auth(index)def index():    print('welcome to inex page')@auth2()def home():    print('welcome to home page')# 调用阶段index()home()

转载于:https://www.cnblogs.com/bingabcd/p/6851024.html

你可能感兴趣的文章
利用Python进行文章特征提取(一)
查看>>
骆家辉 干的好事,忽悠清华大学,
查看>>
,非你莫属,
查看>>
第五周作业
查看>>
了解Session的本质
查看>>
Sass 入门 (一) 安装Sass
查看>>
进程与线程的一个简单解释
查看>>
【HDOJ】3789 奥运排序问题
查看>>
【Linux】鸟哥的Linux私房菜基础学习篇整理(十二)
查看>>
20-黑马程序员------OC 语言学习笔记---多态
查看>>
STC12C5A60S2 双串口通信
查看>>
Arrow function restore
查看>>
伸缩放大的js
查看>>
ServiceStack Redis客户端的bug
查看>>
js中arguments的简单用法
查看>>
WebService核心文件【web-config.wsdd】调用操作
查看>>
MySQL Update
查看>>
Java中super的几种使用方法并与this的差别
查看>>
监控zabbix 3.4.11异常通过邮件报警步骤
查看>>
service的使用
查看>>