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函数-装饰器相关推荐

  1. python装饰器函数-Python函数装饰器常见使用方法实例详解

    本文实例讲述了Python函数装饰器常见使用方法.分享给大家供大家参考,具体如下: 一.装饰器 首先,我们要了解到什么是开放封闭式原则? 软件一旦上线后,对修改源代码是封闭的,对功能的扩张是开放的,所 ...

  2. python装饰器-Python @函数装饰器及用法(超级详细)

    前面章节中,我们已经讲解了 Python 内置的 3 种函数装饰器,分别是 @staticmethod.@classmethod 和 @property,其中 staticmethod().class ...

  3. python装饰器原理-Python函数装饰器原理与用法详解

    本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...

  4. python函数装饰器详解_Python语言函数装饰器用法实例详解

    这篇文章主要介绍了Python语言函数装饰器用法,以实例形式较为详细的分析了Python函数装饰器的常见使用技巧,需要的朋友可以参考下,希望对大家学习Python语言有所帮助. 本文实例讲述了pyth ...

  5. 关于python中def的高级用法,def中套def,python函数装饰器

    Python函数装饰器 装饰器(Decorators)是 Python 的一个重要部分.简单地说:他们是修改其他函数的功能的函数.他们有助于让我们的代码更简短,也更Pythonic(Python范儿) ...

  6. python装饰器实例-Python函数装饰器--实例讲解

    一.装饰器定义: 1.装饰器的本质为函数: 2.装饰器是用来完成被修饰函数的附加功能的 所以:装饰器是用来完成被修饰函数附属功能的函数 装饰器的要求: 1.不能修改被修饰函数的源代码: 2.不能更改被 ...

  7. python装饰器函数-python函数装饰器

    什么是装饰器 装饰器是一个可调用的对象,其参数是另一个函数(被装饰的函数).装饰器可能会: 1,处理被装饰的函数,然后把它返回 2,将其替换成另一个函数或者对象 若有个名为decorate的装饰器,则 ...

  8. python装饰器函数-Python函数装饰器指南

    Python 具有强大的功能和富有表现力的语法.我最喜欢的装饰之一.在设计模式的上下文中,装饰器动态更改方法或类功能,而不必直接使用子类.当您需要扩展功能,但不想修改原函数时,这是理想的选择.我们可以 ...

  9. python菜鸟教程函数-Python 函数装饰器

    讲 Python 装饰器前,我想先举个例子,虽有点污,但跟装饰器这个话题很贴切. 每个人都有的内裤主要功能是用来遮羞,但是到了冬天它没法为我们防风御寒,咋办?我们想到的一个办法就是把内裤改造一下,让它 ...

最新文章

  1. ndk-build: CreateProcess error=193
  2. 脑机接口简史——假如这篇推送是你靠意念打开的
  3. 微软宣布公开预览其内容分发网络
  4. WIN32获取进程当前目录
  5. eBay实践Hadoop MapReduce 任务的性能翻倍之路
  6. mybatis-plus sql注入原理
  7. Unity3d远程连接Hololens提示Cannot connect without a remote machine address specified
  8. mysql 一条记录的某个字段为空,是否占用存储
  9. WPE下载 WPE 各版本下载
  10. 采用数值方法计算最速曲线
  11. 使用外置无线网卡来切换mac地址
  12. SAP如何控制采购价格不显示(适用ME23N、ME2L、ME2M、ME2K、ME2J、ME2C、ME2B、ME2N等)
  13. Horner法则(秦九韶算法 )的程序实现
  14. 阿里云的短信服务acsClient+java
  15. 软件工程--团队答辩
  16. 基于AChartEngine绘制股票走势图----分时图一(走势柱状)
  17. 各种标点符号的英文怎么说
  18. c 开发android ios实例,使用 C++ 进行跨平台移动开发
  19. 商务服务-建站设计思路搜索引擎SEO模型
  20. 反射、io流、正则、网编、MySql、JavaWeb、Android等等等等等等等等等等等等等等等等等~~~~~~

热门文章

  1. uni-app小程序本地打包超过2M不能预览问题;小程序打包过大不能预览和真机调试;uni-app分包;
  2. 安卓BLE开发教程(二) BLE开发流程
  3. React开发(282):公共组件可以提升一下文件层级
  4. [react-router] React-Router的<Link>标签和<a>标签有什么区别
  5. React开发(206):react代码分割之context的api
  6. Taro+react开发(84):taro路由跳转
  7. [css] 使用sass的方式有哪些?
  8. 前端学习(1366):express入门
  9. 前端学习(1258):then参数中的函数返回值
  10. 前端学习(1110):this指向问题