python装饰器使用说明(详解Python装饰器)
类别:脚本大全 浏览量:1659
时间:2021-10-26 11:07:50 python装饰器使用说明
详解Python装饰器1. 定义
本质是函数,用来装饰其他函数,为其他函数添加附加功能
2. 原则
a. 不能修改被装饰函数的源代码
b. 不能修改被装饰的函数的调用方式
3. 实现装饰器知识储备
a. 函数就是变量
b. 高阶函数
i. 把一个函数当作实参传给另外一个函数,在不修改被装饰函数源代码情况下为其添加功能
ii. 返回值中包含函数名, 不修改函数的调用方式
c. 嵌套函数
高阶函数+嵌套函数==》装饰器
|
# Author: Lockegogo user, passwd = 'LK' , '130914' def auth(auth_type): print ( 'auth func:' , auth_type) def outher_wrapper(func): def wrapper( * args, * * kwargs): print ( 'wrapper func:' , * args, * * kwargs) if auth_type = = 'local' : username = input ( 'username:' ).strip() password = input ( 'password:' ).strip() if user = = username and password = = passwd: print ( '\033[32;1mUser has passed authentication\033[0m' ) res = func( * args, * * kwargs) return res else : exit( '\033[32;1mInvalid Username or password\033[0m' ) elif auth_type = = 'ldap' : print ( 'ldap,不会' ) return wrapper return outher_wrapper def index(): print ( 'welcome to index page' ) @auth (auth_type = 'local' ) # home = outher_wrapper(home) def home(): print ( 'welcome to home page' ) return 'from home' @auth (auth_type = 'ldap' ) def bbs(): print ( 'welcome to bbs page' ) index() print (home()) bbs() Decorator |
以上所述是小编给大家介绍的Python装饰器详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/lockegogo/p/10591160.html
您可能感兴趣
- python定义dataframe(对python dataframe逻辑取值的方法详解)
- python 爬虫招聘(Python3获取拉勾网招聘信息的方法实例)
- python协程解释(在python里从协程返回一个值的示例)
- pythonexcel报表实例(对python生成业务报表的实例详解)
- python itchat库介绍(Python利用itchat库向好友或者公众号发消息的实例)
- python对mysql数据分析(python使用adbapi实现MySQL数据库的异步存储)
- python函数的参数有几种类型(在Python中居然可以定义两个同名参数的函数)
- python中lambda教程(浅析python的Lambda表达式)
- python处理各种xml文件(Python使用sax模块解析XML文件示例)
- python定时推送邮件(python实现定时压缩指定文件夹发送邮件)
- python3 代码解读(Python3列表内置方法大全及示例代码小结)
- python弹球游戏编写过程(python实现坦克大战游戏 附详细注释)
- python樱花绽放代码(新年快乐! python实现绚烂的烟花绽放效果)
- python字典键对应的值(Python 互换字典的键值对实例)
- python使用aes加密解密(python实现AES加密与解密)
- python如何遍历一个列表(说说如何遍历Python列表的方法示例)
- 虐待儿童是发泄支配欲的愚蠢行为(虐待儿童是发泄支配欲的愚蠢行为)
- 你或许不知道你隐藏的支配欲望(你或许不知道你隐藏的支配欲望)
- 把宽体丰田86卖了,换成7.5代高尔夫GTI玩起姿态与性能并存的改装(把宽体丰田86卖了)
- 大众推出了第五代高尔夫GT(大众推出了第五代高尔夫GT)
- 换代在即,现在是抄底 7.5代 高尔夫的最佳时机吗(换代在即现在是抄底)
- 2020年大众7.5代高尔夫R终结特别版 最后的呐喊(2020年大众7.5代高尔夫R终结特别版)
热门推荐
- 宝塔数据库不小心删了(宝塔面板MySQL数据库经常自动停止的解决方法)
- dedecms更新后设置不显示(dedecms中tags页面显示错位的解决方法)
- table单元格固定宽度
- css如何设置表格样式
- eclipse中tomcat工作原理(Eclipse创建tomcat实现过程原理详解)
- laravel实现跨域访问(使用laravel和ajax实现整个页面无刷新的操作方法)
- css垂直居中16个方法(css实现元素垂直居中的常用方法总结)
- python开源协议简介(对python 自定义协议的方法详解)
- tomcat服务出现乱码(解决Tomcat10 Catalina log乱码问题)
- Windows2012配置SQLServer2014AlwaysOn的图解(Windows2012配置SQLServer2014AlwaysOn的图解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9