Python视频教程讲解装饰器

推荐免费:Python视频教程

装饰器概念

装饰器,说白了,就是用来装饰函数的一个函数。

装饰器遵循 开放封闭原则、依赖倒置原则,这两个原则概念,自行百度下,

装饰器长啥样def wrapper(f):

def inner(*args,**kwargs):

ret = f(*args,**kwargs)

return ret

return inner

上述代码是装饰器的固定格式

调用装饰器@wrapper # 简称语法糖

def test():

print(1)

test()

@wrapper是调用装饰器,相比于wrapper(test()),更节省代码,更美观。可能你看到这里就不懂了,为啥要@wrapper? 调用函数不是wrapper()?

其实吧,你要我说,我也不知道,我就知道,这样写更简单。直接在要装饰的函数前@wrapper即可

以一个小例子快速看懂装饰器def wrapper(f):

print(2)

def inner(*args,**kwargs):

print(3)

ret = f(*args,**kwargs)

print(4)

return ret

return inner

@wrapper

def test():

print(1)

test()

@wrapper == wrapper(test()) 相当于调用装饰器函数,直接用语法糖@wrapper会更简便

*args是匹配以位置传参的参数,**kwargs是匹配按关键字传参的参数,这样就可以接收所有参数。

wrapper(test)接收值传给f,在内圈函数中,ret = f(*args,**kwargs)这函数是执行装饰的函数的代码。再返回执行的值,最后返回这个函数。此代码的执行结果为:2

3

1

4

如下图所示

由此可见

函数inner中,print(3)是执行装饰函数前的操作, print(4)是执行装饰函数后的操作。

理解起来可能有些困难。所以最好还是动手试试。

基础小练习'''1. 默写装饰器固定格式

2. 写一个加减功能的装饰器

'''

python基础装饰器_Python基础 装饰器及练习相关推荐

  1. python装饰器_Python基础-装饰器

    作者:Zarten知乎专栏:Python基础深入详解知乎ID: Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 ! 概述 装饰器其实就 ...

  2. python函数装饰函数_Python精进-装饰器与函数对象

    本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...

  3. python 函数装饰器_python函数装饰器的用法

    函数装饰器: 开闭原则:在面向对象编程领域中,开闭原则规定"软件中的对象(类,模块,函数等等)应该对于扩展是开放的, 但是对于修改是封闭的",这意味着一个实体是允许在不改变它的源代 ...

  4. python函数修饰器_Python函数装饰器指南

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

  5. python 各版本镜像_Python 基础镜像构建

    Python 基础镜像构建 如何制作一个定制的 Python 基础 Docker 镜像 目标:准备一个定制的 Python 基础镜像. 基础镜像,通常为含最小功能的系统镜像,之后的应用镜像都以此为基础 ...

  6. python新手入门课_Python基础视频12集入门课程

    视频+笔记:├─1简介与实验环境配置9│ Python基础.pptx│ Python简介.pptx│ 实验环境配置2-1.pdf│ 2.1简介与实验环境配置.mp4│ 请简述 Python 语言与 C ...

  7. python迭代器的用法_python的装饰器,迭代器用法

    装饰器. 装饰器实际就是一个函数 定义:在不改变内部代码和调用方式的基础上增加新的功能 了解装饰器需要了解3个内容: 1.函数即变量 2.高阶函数 1).把一个函数名当作实参传给另一个函数 2).返回 ...

  8. python3层装饰器_python三层装饰器python字符串,数值计算

    Python是一种面向对象的语言,但它不像C++一样把标准类都封装到库中,而是进行了进一步的封装,语言本身就集成一些类和函数,比如print,list,dict etc. 给编程带来很大的便捷 Pyt ...

  9. python父类方法的装饰器_Python使用装饰器自动调用父类__init__

    众所周知,Python中class的构造函数实际是__new__(),但是如果我们执行p1=Point()的时候,不仅会调用Point的__new__方法,而且会调用Point的__init__方法. ...

最新文章

  1. 2022年全球及中国工业用真空电缆行业十四五产能需求与投资战略研究报告
  2. c#中namespace、assembly与DLL/EXE
  3. 清除webbrowser cookie/session的6种方法
  4. 聚类dbi指数_一种基于DBI-PD聚类算法的异常检测机制
  5. TUN/TAP设备浅析(三) -- TUN/TAP设备的应用
  6. Linux 字符集 en_us,Linux语言环境:en_US.UTF-8 vs en_US
  7. 基于SSH框架社区智能化管理系统答辩PPT模板
  8. python 多线程读写文件_Python多线程同步---文件读写控制方法
  9. matlab迭代算法实例_智能优化算法及其MATLAB实例-免疫算法笔记
  10. Java 操作 HBase 教程
  11. 为什么计算机软件是无形资产,购买软件是否属于无形资产
  12. VMware彻底删除、扫描添加导入,已安装好的虚拟计算机
  13. 常威,你还说你不会索引优化?MYSQL索引失效的常见场景与规避方法
  14. 有可以在家做的赚钱兼职吗?
  15. conda创建Python虚拟环境
  16. 想学好前端 H5 CSS3 的小朋友们康康我~
  17. 如何免费安装并激活序列号iMazing软件
  18. 苹果手机变成耳机模式怎么调回来_百元真无线蓝牙耳机,竟比肩airpods?
  19. python下载版本区别
  20. Oracle RAC与DG

热门文章

  1. iPhone 查看万能钥匙连接的 WiFi 密码
  2. Java HashMap原理及内部存储结构
  3. 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结
  4. Cannot find module 'rxjs/operators/share'
  5. 时下最热开源大数据技术TOP10
  6. java学习(六)数据类型分类
  7. IPSec ××× 在企业网中的应用
  8. UnisGuard防篡改产品了解
  9. 关于owa over https的邮箱加密访问
  10. python openoffice_windows下安装UNO,配置AEROO_REPORT (Openoffice4已经升级为Python2.7.5版)...