1,装饰器的形成

    编程原则:开放封闭原则。

    开放:对扩展是开放的

    封闭:对修改是封闭的

  因为修改是封闭的,所以为了对函数进行功能的扩展,就使用装饰器!

  2,装饰器的定义

# wrapper就是一个装饰器函数,就是对一个函数有一些装饰效果
def wrapper(f): # 装饰器函数,f是被装饰的函数
def inner(*args, **kwargs):
# 在被装饰函数之前想增加的功能
ret = f(*args, **kwargs) # 被装饰的函数
# 在被装饰函数之后想增加的功能
return ret # 接收被装饰函数的返回值
return inner
# 装饰器的作用:不修改函数的调用方式,且能在函数的前后添加功能

  3,装饰器的使用

@wrapper    # 语法糖 @装饰器函数名 相当于func = time_count(func)
def func(): # 被装饰的函数
time.sleep(1)
print('zxc')
return 'hahaha'
ret = func() # zxc
print(ret) # hahaha

  4,装饰器实例

import time
# 计算函数运行时间
def wrapper(f): # 装饰器函数,f是被装饰的函数
def inner(*args, **kwargs):
start = time.time()
ret = f(*args, **kwargs) # 被装饰的函数
end = time.time()
print(end-start)
return ret # 接收被装饰函数的返回值
return inner @wrapper
def func(): # 被装饰的函数
print('zxc')
func() # 打印zxc 打印函数hunc的运行时间

最新文章

  1. webpack入门教程之Hello webpack(一)
  2. Microsoft SQL Server 2005 Service fails to start
  3. C语课设心得分享(三)
  4. modernizer的意义
  5. SSH连接 NAT型 VirtualBox + LINUX
  6. Spring MVC 接收Json格式参数
  7. 第十篇、HTML5实战篇——1
  8. Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射Screen-Space Perceptual Rendering & Subsurface Scattering of Human Skin
  9. 使用jquery生成二维码
  10. 左右v$datafile和v$tempfile中间file#
  11. c语言第五次作业--函数
  12. prim算法和克鲁斯卡尔算法
  13. Python-TXT文本操作
  14. linux下vim的安装及其设置细节
  15. 基于快速排序思想partition查找第K大的数或者第K小的数。
  16. NUMA的取舍与优化设置
  17. jQuery的节点选择
  18. 汉码盘点机PDA无缝对接思迅思迅盘点机思迅条码数据采集器批号商品盘点的方法
  19. [转]Python的getattr(),setattr(),delattr(),hasattr()
  20. 【maven】Maven打包后为何文件大小改变了

热门文章

  1. 深入探索WebSockets
  2. JVM学习篇章(二)
  3. PHP来控制Linux,ssh2来控制服务器端
  4. iOS app发布流程
  5. Person Re-identification 系列论文笔记(八):SPReID
  6. 介绍配置管理工具SVN的使用
  7. hdu4178 乱搞
  8. Python基础:01Python标准类型分类
  9. 模板—Hash_map
  10. 洛谷P1060 开心的金明