python 阿狸的进阶之路(4)
装饰器
#1、开放封闭原则:对扩展开放,对修改是封闭
#2、装饰器:装饰它人的,器指的是任意可调用对象,现在的场景装饰器-》函数,被装饰的对象也是-》函数
#原则:1、不修改被装饰对象的源代码 2、不修改被装饰对象的调用方式
#装饰器的目的:在遵循1,2的前提下为被装饰对象添加上新功能
(1)无参数类型
import time def outer(func):def inner():time.sleep(1)print("hello")func()return inner def bar():print('world')
(2)有参数类型
# 有参装饰器 import timedef auth2(engine='file'):def auth(func): # func=indexdef inner(*args,**kwargs):if engine == 'file':name=input('name>>: ').strip()password=input('password>>: ').strip()if name == 'egon' and password == '123':print('login successful')return func(*args,**kwargs)else:print('login err')elif engine == 'mysql':print('mysql auth')elif engine == 'ldap':print('ldap auth')else:print('engin not exists')return innerreturn auth@auth2(engine='mysql') #@auth #index=auth(index) #index=inner def index(name):time.sleep(1)print('welecome %s to index' %name)return 1111res=index('egon') #res=inner('egon') print(res)
(3)并列装饰器
import time def timmer(func):def inner(*args,**kwargs):start=time.time()res=func(*args,**kwargs)stop=time.time()print('run time is %s' %(stop-start))return resreturn innerdef auth2(engine='file'):def auth(func): # func=indexdef inner(*args,**kwargs): # 一致if engine == 'file':name=input('name>>: ').strip()password=input('password>>: ').strip()if name == 'egon' and password == '123':print('login successful')res = func(*args,**kwargs) #一致return reselse:print('login err')elif engine == 'mysql':print('mysql auth')elif engine == 'ldap':print('ldap auth')else:print('engin not exists')return innerreturn auth@auth2(engine='file') @timmer def index(name):time.sleep(1)print('welecome %s to index' %name)return 1111res=index('egon') print(res)
(4)
from functools import wraps import time def timmer(func):@wraps(func)def inner(*args,**kwargs):start=time.time()res=func(*args,**kwargs)stop=time.time()print('run time is %s' %(stop-start))return res# inner.__doc__=func.__doc__# inner.__name__=func.__name__return inner@timmer def index(name): #index=inner'''index 函数。。。。。'''time.sleep(1)print('welecome %s to index' %name)return 1111res=index('egon') print(res)print(help(index))
转载于:https://www.cnblogs.com/taozizainali/p/8202361.html
python 阿狸的进阶之路(4)相关推荐
- Python 终极指南:进阶之路
如果你对数据科学.Web 开发.机器人或物联网感兴趣,那你一定要学 Python.由于 Python 被大量使用和广泛应用,它已经成为了增长最快的编程语言. 对于一个初学者或没有技术背景的人来说,学习 ...
- python flag用法_Python 进阶之路 (四) 先立Flag, 社区最全的Set用法集锦
Set是什么 大家好,恰逢初五迎财神,先预祝大家新年财源滚滚!! 在上一期详解tuple元组的用法后,今天我们来看Python里面最后一种常见的数据类型:集合(Set) 与dict类似,set也是一组 ...
- [转]工程师进阶之路(三)
2019独角兽企业重金招聘Python工程师标准>>> 工程师进阶之路 三 再谈沟通的策略 什么叫做策略,我的认识就是做事情的方法,有些时候光有很好的原则,而没有好的方法也是不行的. ...
- python处理pdf实例_Python实战-从菜鸟到大牛的进阶之路pdf_Python教程
资源名称:Python实战-从菜鸟到大牛的进阶之路 pdf 第1章 Python 处理 cassandra 升级后的回滚脚本 第 2 章 多套方案来提高 python web 框架的并发处理能力 第 ...
- Python 进阶之路 (九) 再立Flag, 社区最全的itertools深度解析(上)
前言 大家好,今天想和大家分享一下我的itertools学习体验及心得,itertools是一个Python的自带库,内含多种非常实用的方法,我简单学习了一下,发现可以大大提升工作效率,在sf社区内没 ...
- Python 进阶之路 (十二) 尾声即是开始
Python进阶之路总结 大家好,我的<< Python进阶之路>>到这一期就到此为止了,和 <<Python 基础起步>>不同,在掌握了一些基础知识后 ...
- Python 进阶之路 (八) 最用心的推导式详解 (附简单实战及源码)
什么是推导式 大家好,今天为大家带来问我最喜欢的Python推导式使用指南,让我们先来看看定义~ 推导式(comprehensions)是Python的一种独有特性,推导式是可以从一个数据序列构建另一 ...
- python英译汉库模块_Python 进阶之路-翻译模块
Python 进阶之路-翻译模块 作者:nango 阅读:1749次 来源:原创 时间:2017-07-14 17:09 Git 地址 [python 翻译模块](https://github. ...
- python职业发展规划-Python开发者的四大进阶攻略,菜鸟的成神之路
原标题:Python开发者的四大进阶攻略,菜鸟的成神之路 随着人工智能的发展与应用,Python编程语言受到世界各界人士的关注,编程圈金句从"人生苦短,我学Python"转变成了& ...
最新文章
- AI一分钟 | 微软将成立微软亚洲研究院上海分院;阿里AI鉴黄师能判别呻吟声
- linux自动下载ftp文件夹,Linux 下FTP定时执行批量下载文件
- Go简单的Goroutine示例
- bzoj1016 [JSOI2008]最小生成树计数
- 列赋值为列表_Pandas入门-3-新增数据列操作
- div css网页设计源代码_HTML+CSS网页设计,企业网站服务项目布局样式
- node-webki 基本程序结构
- 东航期货行情接口和交易接口(20190509)
- VisualStudio移动开发(C#、VB.NET)Smobiler开发平台——VoiceRecorder控件的使用方式.Net移动开发...
- docker search oracle,Docker search 命令
- 简单的整人代码(你是猪,文章末附带文件)
- QIIME 2教程. 22命令行界面q2cli(2021.2)
- python做估值模型_理解债券估值中的摊销/摊余成本,利用EXCEL+Python估值建模
- ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57,A72
- 【NLP】Representation Learning for Natural Language Processing
- Unity 2D骨骼动画2:创建真实动画
- Office2007页眉有横线
- Cheat Enginee(CE)对扫雷中部分属性的内存地址寻找以及修改~逆向分析
- 那些年我们在python掉进的坑系列之一pandas的to_sql
- Delphi断线重连线程
热门文章
- python跨目录调用_python 跨目录访问文件
- linux so_nosigpipe,TCP_NODELAY/SO_LINGER/SO_NOSIGPIPE/MSG_NOSIGNAL设置
- iOS手势操作简介(四)
- 【网络安全】关于ARP攻击的原理以及在Kali Linux环境下的实现
- QT+VS中使用qDebbug()打印调试信息无法显示
- [POI2007]MEG-Megalopolis
- poj3713 Transferring Sylla 枚举+tarjan判割点
- TP3.2设置URL伪静态满足更好的SEO效果
- jmeter 非gui 模式跑jmx
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的解决方案...