简单理解python装饰器

feko大魔王 2021-10-27 16:45:20
编程语言 Python python装饰器

  • 简单正常python例子:
def up(text):
return text.upper() #转成大写
def lo(text):
return text.lower() ##转成小写
def greet(func):
gt = func("AbCd")
print (gt)
greet(up)
greet(lo)

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 简单的装饰器:
import time
def c_time(func):
def inner(*args, **kwargs):
begin = time.time()
func(*args, **kwargs)
end = time.time()
print("程序运行实际总时间:", end-begin)
return inner
@c_time #fac = c_time(fac)
def fac(name):
time.sleep(3)
print(name + '睡了3秒')
fac("张三")

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 简单带参数的装饰器:
import time
def out(type): ##相当于套多一层函数
def c_time(func):
def inner(*args,**kwargs):
begin = time.time()
func(*args,**kwargs)
end = time.time()
if type==2:
print("这是类型2,带参数的")
print("程序运行实际总时间:", end-begin)
return inner ##每层都需要返回函数
return c_time ##每层都需要返回函数
@out(type=2)
def fac(name):
time.sleep(3)
print(name + '睡了3秒')
fac("张三")

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
版权声明
本文为[feko大魔王]所创,转载请带上原文链接,感谢
https://blog.51cto.com/feko/4347387

  1. 【算法学习】237. 删除链表中的节点(java / c / c++ / python / go)
  2. 【算法学习】1672. 最富有客户的资产总量(java / c / c++ / python / go / rust)
  3. 【算法学习】771. 宝石与石头(java / c / c++ / python / go / rust)
  4. 【算法学习】02.03. 删除中间节点(java / c / c++ / python / go)
  5. 【算法学习】1769. 移动所有球到每个盒子所需的最小操作数(java / c / c++ / python / go / rust)
  6. 【算法学习】1486. 数组异或操作(java / c / c++ / python / go / rust)
  7. 【算法学习】LCP 44. 开幕式焰火(java / c / c++ / python / go / rust)
  8. 【算法学习】剑指 Offer 58 - II. 左旋转字符串(java / c / c++ / python / go / rust)
  9. python的学校疑问难题求解
  10. 大学python题 作业题 基础题
  11. Python字典的知识,输出的样例为,最高分:89
  12. python写入文件失败且程序提前中止
  13. 用Python写一个学生字典,帮帮忙
  14. Python,能不能帮帮忙,真的不会
  15. [python] yield 和 readline() 的使用问题
  16. python安装找不到问题救救孩子
  17. python中循环结构完成数字游戏
  18. 如何用python实现多列vlookup(excle操作)
  19. python语言deLong‘s test:通过统计学的角度来比较两个ROC曲线、检验两个ROC曲线的差异是否具有统计显著性
  20. LPC55S69 MicroPython模组和库函数
  21. LPC55S69 IoT Kit专属 Micropython模组和库函数简介
  22. 安装LPC55S69 MicroPython模块是遇到的CDC Interface驱动问题
  23. 使用soundcard在Python中操作声卡
  24. 自动化快速上手--Python(7)--【字典】--每天半小时
  25. Python之循环结构【包括列表、for语句、range()函数、while语句、循环嵌套、break、continue、算法优化等】
  26. Python模块安装与异常处理详解(numpy、pygame、matplotlib等)
  27. Python__init__.py作用
  28. python 爬取网页时出现多种错误
  29. Python中关于大量绘制速度曲线的问题
  30. python-async的安装和使用方法
  31. Matlab的fread(fild,1,int32)迁移到python变成什么
  32. 想用python开发一个音频过滤器,请指导?
  33. python使用openpyxl读取Excel文件显示No such file or directory
  34. xmoji虚拟头像交互如何使用python(像深度学习)制作?
  35. python 打开页面页面的链接,为什么总是报错呀?
  36. Python中DataLoader的batch_size、shuffle的疑惑。
  37. python安装pymssql库,可以import,但无法调用函数
  38. 【Python学习教程】常用的8个Python数据可视化库!
  39. python处理csv中的时间
  40. 数据结构,元音统计(Python)
  41. python的site-packages复制直接到其他电脑环境上能用吗
  42. Pycharm如何给项目配置python解释器
  43. conda创建python虚拟环境
  44. Python selenium的爬虫无法完整爬取整个页面的内容
  45. 高清版!这18张 Python 数据科学速查表,让你的代码变得更强大!
  46. python代码不会敲,请好心老哥帮助我一下
  47. Python敲七输出符合的个数
  48. Python 有人能给提供简单的思路嘛
  49. python单次运行写入csv成功,循环写入失败
  50. python利用os模块进行增量备份
  51. 【算法学习】807. 保持城市天际线(java / c / c++ / python / go / rust)
  52. 如何利用python输出等腰杨辉三角
  53. python按键执行倒计时小程序不能实现要求,要怎么改才好?
  54. Python request模块post请求的问题
  55. Django连接已有Oracle时的主键设置问题,没主键无法查询怎么办?
  56. 如何用python的dictionary编写一个联系人通讯录程序
  57. 如果Python里range反向输出,不输出步长会怎么样?
  58. 一个关于Python pip的问题: 出现Cannot open \python\Scripts\pip-script.py报错
  59. 富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了
  60. 【全网最全】python正则表达式大全,所有讲解都在这,包教包会,学不会找我!