python函数-装饰器
python函数-装饰器
1.装饰器的原则--开放封闭原则
开放:对于添加新功能是开放的
封闭:对于修改原功能是封闭的
2.装饰器的作用
在不更改原函数调用方式的前提下对原函数添加新功能
3.装饰器的本质--闭包
4.装饰器
(1)简单的装饰器
def deco(f):def wrapper():"""原函数前添加的功能"""f()"""原函数后添加的功能"""return wrapperdef func():print('这是原函数!')func = deco(func)
func()
(2)装饰器的语法糖-----@deco
def deco(f):def wrapper():"""原函数前添加的功能"""f()"""原函数后添加的功能"""return wrapper@deco # ——>此处效果等同于 func = deco(func)
def func():print('这是原函数')func()
(3)带返回值的装饰器
def deco(f):def wrapper():"""原函数前添加的功能"""res = f()"""原函数后添加的功能"""return resreturn wrapper@deco
def func():print('这是原函数')
func()
(4)装饰器加参数的固定格式
def deco(f):def wrapper(*args,**kwargs):"""原函数前添加的功能"""res = f(*args,**kwargs)"""原函数后添加的功能"""return resreturn wrapper@deco
def func(*args,**kwargs):print('这是原函数')
func()
(5)装饰器的固定格式--wraps版
from functools import wrapsdef wrapper(func):@wraps(func)def inner(*args,**kwargs):print('在被装饰的函数执行之前做的事')ret = func(*args,**kwargs)print('在被装饰的函数执行之后做的事')return retreturn inner
@wrapper
def holiday(day):print("新年快乐")return '好开心'
print(holiday.__name__)
print(holiday.__doc__)
ret = holiday(3)
print(ret)>>>>
holiday
None
在被装饰的函数执行之前做的事
新年快乐
在被装饰的函数执行之后做的事
好开心
(6) 多个装饰器装饰一个函数
def wrapper1(func):def inner1():print('wrapper1 ,before func')func()print('wrapper1 ,after func')return inner1def wrapper2(func):def inner2():print('wrapper2 ,before func')func()print('wrapper2 ,after func')return inner2@wrapper2 # 将inner1进行装饰,即inner1 = wrapper2(inner1) = inner2
@wrapper1 # 先执行这个装饰器,即f = wrapper1(f) = inner1
def f():print('in f')f()>>>>
wrapper2 ,before func
wrapper1 ,before func
in f
wrapper1 ,after func
wrapper2 ,after func
转载于:https://www.cnblogs.com/a438842265/p/8467705.html
python函数-装饰器相关推荐
- python装饰器函数-Python函数装饰器常见使用方法实例详解
本文实例讲述了Python函数装饰器常见使用方法.分享给大家供大家参考,具体如下: 一.装饰器 首先,我们要了解到什么是开放封闭式原则? 软件一旦上线后,对修改源代码是封闭的,对功能的扩张是开放的,所 ...
- python装饰器-Python @函数装饰器及用法(超级详细)
前面章节中,我们已经讲解了 Python 内置的 3 种函数装饰器,分别是 @staticmethod.@classmethod 和 @property,其中 staticmethod().class ...
- python装饰器原理-Python函数装饰器原理与用法详解
本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...
- python函数装饰器详解_Python语言函数装饰器用法实例详解
这篇文章主要介绍了Python语言函数装饰器用法,以实例形式较为详细的分析了Python函数装饰器的常见使用技巧,需要的朋友可以参考下,希望对大家学习Python语言有所帮助. 本文实例讲述了pyth ...
- 关于python中def的高级用法,def中套def,python函数装饰器
Python函数装饰器 装饰器(Decorators)是 Python 的一个重要部分.简单地说:他们是修改其他函数的功能的函数.他们有助于让我们的代码更简短,也更Pythonic(Python范儿) ...
- python装饰器实例-Python函数装饰器--实例讲解
一.装饰器定义: 1.装饰器的本质为函数: 2.装饰器是用来完成被修饰函数的附加功能的 所以:装饰器是用来完成被修饰函数附属功能的函数 装饰器的要求: 1.不能修改被修饰函数的源代码: 2.不能更改被 ...
- python装饰器函数-python函数装饰器
什么是装饰器 装饰器是一个可调用的对象,其参数是另一个函数(被装饰的函数).装饰器可能会: 1,处理被装饰的函数,然后把它返回 2,将其替换成另一个函数或者对象 若有个名为decorate的装饰器,则 ...
- python装饰器函数-Python函数装饰器指南
Python 具有强大的功能和富有表现力的语法.我最喜欢的装饰之一.在设计模式的上下文中,装饰器动态更改方法或类功能,而不必直接使用子类.当您需要扩展功能,但不想修改原函数时,这是理想的选择.我们可以 ...
- python菜鸟教程函数-Python 函数装饰器
讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切. 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个办法就是把内裤改造一下,让它 ...
最新文章
- ndk-build: CreateProcess error=193
- 脑机接口简史——假如这篇推送是你靠意念打开的
- 微软宣布公开预览其内容分发网络
- WIN32获取进程当前目录
- eBay实践Hadoop MapReduce 任务的性能翻倍之路
- mybatis-plus sql注入原理
- Unity3d远程连接Hololens提示Cannot connect without a remote machine address specified
- mysql 一条记录的某个字段为空,是否占用存储
- WPE下载 WPE 各版本下载
- 采用数值方法计算最速曲线
- 使用外置无线网卡来切换mac地址
- SAP如何控制采购价格不显示(适用ME23N、ME2L、ME2M、ME2K、ME2J、ME2C、ME2B、ME2N等)
- Horner法则(秦九韶算法 )的程序实现
- 阿里云的短信服务acsClient+java
- 软件工程--团队答辩
- 基于AChartEngine绘制股票走势图----分时图一(走势柱状)
- 各种标点符号的英文怎么说
- c 开发android ios实例,使用 C++ 进行跨平台移动开发
- 商务服务-建站设计思路搜索引擎SEO模型
- 反射、io流、正则、网编、MySql、JavaWeb、Android等等等等等等等等等等等等等等等等等~~~~~~
热门文章
- uni-app小程序本地打包超过2M不能预览问题;小程序打包过大不能预览和真机调试;uni-app分包;
- 安卓BLE开发教程(二) BLE开发流程
- React开发(282):公共组件可以提升一下文件层级
- [react-router] React-Router的<Link>标签和<a>标签有什么区别
- React开发(206):react代码分割之context的api
- Taro+react开发(84):taro路由跳转
- [css] 使用sass的方式有哪些?
- 前端学习(1366):express入门
- 前端学习(1258):then参数中的函数返回值
- 前端学习(1110):this指向问题