博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中的装饰器——11
阅读量:7106 次
发布时间:2019-06-28

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

装饰器

什么是装饰器

装饰他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象

原则

--- 不修改被修饰函数的源代码

--- 不修改被修饰函数的调用方式

装饰器的目标

在遵循原则的基础上为被装饰对象添加新功能

无参装饰器

import time#导入time模块def timmer(func):    def wrapper():        start_time = time.time()#开始的时间        res = func()        stop_time = time.time()#结束的时间        print('run time is %s'%(stop_time-start_time))#打印运行时间        return res    return wrapper@timmerdef test():    time.sleep(1)    print('from test')test()

简易验证登录状态的装饰器

user_list = [    {
'name':'ahe520','passwd':'6201134'}, {
'name':'xl520','passwd':'123'}, {
'name':'hzz520','passwd':'12345'}]#存放用户名密码的列表current_dic = {
'username':None,'userlogin':False}#登录状态def auth_func(func): def warpper(*args,**kwargs): if current_dic['username'] and current_dic['userlogin']: res = func(*args,**kwargs) return res username = input('请输入用户名:') userpasswd = input('请输入密码:') for user_dic in user_list: if username ==user_dic['name'] and userpasswd == user_dic['passwd']: current_dic['username'] = username current_dic['userlogin'] = True res = func(*args,**kwargs) return res else: print('用户名或密码错误') return warpperdef index(): print('欢迎进入主页')@auth_funcdef home(): print('欢迎回家')@auth_funcdef shipping_car(): print('购物车里有[%s],[%s],[%s]'%('牛奶','饮料','啤酒'))index()home()shipping_car()

 

转载于:https://www.cnblogs.com/winsdom/p/9133316.html

你可能感兴趣的文章
华为的JAVA面试题及答案(部分)
查看>>
定时关机命令——shutdown
查看>>
基于Java的数据采集(三)
查看>>
【编程题目】最长公共字串
查看>>
lucene 专业名词作用整理
查看>>
win32 自定义右键菜单
查看>>
DRY原则和Shy原则
查看>>
Microcontroller measures resistance without an ADC
查看>>
前端翻译:Promises/A+规范
查看>>
PHP 7: PHP 变量和常量的定义
查看>>
spin_lock & mutex_lock的差别?
查看>>
curl命令具体解释
查看>>
Linux进程间通信——使用命名管道
查看>>
TestLink学习四:TestLink1.9.13使用说明
查看>>
通用分页存储过程
查看>>
神秘代码让iPhone微信闪退的解决方法
查看>>
文章索引
查看>>
基于jquery结婚电子请柬特效素材
查看>>
Knockout应用开发指南 第九章:高级应用举例
查看>>
EDW on Hadoop(Hadoop上的数据仓库)技术选型和实践思考
查看>>