python装饰器@深度加工(三分钟读懂)
在不修改原函数的情况下,来对函数进行扩展
在定义函数时,可以通过@装饰器,来使用指定的装饰器,来装饰当前的函数
可以同时为一个函数指定多个装饰器,这样函数将会安装从内向外的顺序被装饰
(*args , **kwargs)
用于接收位置参数和关键词参数
def fn1(x):def bread(*args , **kwargs):print('上层面包')y = x(*args , **kwargs)print('下层面包')return y return bread # 返回新函数def fn2(q):def vegetables(*args , **kwargs):print('上层蔬菜')z = q(*args , **kwargs)print('下层蔬菜')return zreturn vegetables # 返回新函数# 加了这个装饰器 就相当于 fn3 = fn1(fn3)
@fn1 # 添加面包
def fn3(): # 添加鸡肉print("鸡肉")
# 加了这个装饰器 就相当于 fn3 = fn1(fn2)
@fn1 # 添加面包
@fn2 # 添加蔬菜
def fn4(): # 添加牛肉print('牛肉')fn3()
print("-" * 20, '第一份餐点已经做好,请取餐。')
fn4()
print("-" * 20, '第二份餐点已经做好,请取餐。')
上层面包
上层蔬菜
牛肉
下层蔬菜
下层面包
-------------------- 第一份餐点已经做好,请取餐。
上层面包
鸡肉
下层面包
-------------------- 第二份餐点已经做好,请取餐。
python装饰器@深度加工(三分钟读懂)相关推荐
- python类内置装饰器(一分钟读懂)
property装饰器,用来将一个get方法,转换为对象的属性 添加为property装饰器以后,我们就可以像调用属性一样使用get方法 使用property装饰的方法,必须和属性名是一样的 sett ...
- python高阶函数(三分钟读懂)
python高阶函数(三分钟读懂) 函数式编程 Python中,函数是一等对象 一等对象:具有特点 ① 对象是在运行时创建的 ② 能赋值给变量或作为数据结构中的元素 ③ 能作为参数传递 ④ 能作为返回 ...
- 三分钟读懂新一代人工智能——ChatGPT
2022年以来,AI开始在很多贴近消费者的领域发挥越来越大的作用,之前我写过一篇文章<一分钟学会AI绘画和创作>,很多朋友纷纷尝鲜. 最近一个月以来,OpenAI公司推出的智能机器人Cha ...
- python装饰器实例-python 装饰器(三):装饰器实例(一)
示例 7-15 定义了一个装饰器,它会在每次调用被装饰的函数时计时,然后把经过的时间.传入的参数和调用的结果打印出来. 示例 7-15 一个简单的装饰器,输出函数的运行时间 importtimedef ...
- python 函数中参数的传递方式(三分钟读懂)
python 函数中参数的传递方式 第一种:指定默认值 def fn1(a = 1): # 函数中的(a)是形参 和外面的变量无关 (这里的是定义函数中指定默认值)print("fn1&qu ...
- python内置模块_三分钟读懂Python内置模块collections
collections模块 Python内置模块,在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.d ...
- python封装:隐藏对象中的属性或方法(三分钟读懂)
封装:隐藏对象中的属性或方法 隐藏对象中的属性 隐藏:- 将对象的属性名,修改为一个外部不知道的名字 我们使用时,有特殊方法来处理获取(修改)对象中的属性 获取(修改)对象中的属性 需要提供一个get ...
- python作用域(scope)(三分钟读懂)
作用域(scope) 作用域指的是变量生效的区域,在Python中一共有两种作用域 1.全局作用域 全局作用域在程序执行时创建,在程序执行结束时销毁 所有函数以外的区域都是全局作用域 在全局作用域中定 ...
- python面向对象是什么?面试技巧(三分钟读懂)
面向对象 对象,现实世界,随处可见的一种事物就是对象. 对象 是事物存在的实体,如人类,汽车,动物,水果,这些都有事一个抽象的类别 实物是类的具体存在 1.类是对象的抽象集合, 2.类的具体表现是对象 ...
最新文章
- __clone class php_PHP中__clone()方法详解
- 利用FluidMoveBehavior制作出手机通讯录平滑的效果
- 一名全栈工程师的必备“百宝箱”
- 360互联网训练营第十四期——大数据技术开放日
- PreparedStatement 防止 SQL 注入原理
- VS2008 ~ VS2019下载地址
- flutter-谷歌移动UI框架
- 【Mysql 错误定位】语法错误
- Apache详解(一)Internet和HTTP协议
- Dell intel i5 1135笔记本 win10 ubuntu18.04双系统
- Java中split的用法
- 语文老师之二小白的边城
- 处理告警“ warning #69-D integer conversion resulted in truncation”的方法
- Typhon升级到5.8,编译原来程序出现提示:Compilation raised exception internally
- 网络直播对网络的要求有多高
- 星空样式(HTML)
- GitHub 近 70K 星,命令行的艺术!
- 简易版------打砖块
- 谭浩强《C语言程序设计 》习题 6-3
- 15秒视频播放量超5500万,如何抢占涨粉又爆赞的流量密码?