python 装饰器学习笔记

学习笔记 马富天 2020-10-27 15:41:30 5 0

【摘要】python 装饰器是 python 进阶部分的知识,可是平时自己用的比较少,对于它的概念,总是容易遗忘,所以写了这篇文章记录一下它的关键点,让自己能够记住它的写法。

想要了解并记住关于 python 装饰器,就记住以下 4 个知识点即可:

1、在 python 中,可以在一个函数中定义另一个函数

2、函数也能返回函数

3、可以将函数作为参数传给另一个函数

4、函数可以赋值给变量而不去执行它

  1. def say(func):
  2.     
  3.     # 在 python 中,可以在一个函数中定义另一个函数(1)
  4.     # wrap() 函数作用域只在 say() 函数内
  5.     def wrap():
  6.         print(1)
  7.         func()
  8.         print(2)
  9. 	# 可以不需要在一个函数里执行另一个函数,我们可以将其作为输出返回
  10. 	# 函数也能返回函数(2)
  11.     return wrap
  12. def hello():
  13.     print('hello world')
  14. # 可以将函数作为参数传给另一个函数(3)
  15. # 函数可以赋值给一个变量而不去执行它(4)
  16. hello = say(hello)
  17. # 如果把括号放在后面,函数就会执行
  18. # 如果在它后面不放括号,那么不会被执行,并且可以到处传递,可以赋值给别的变量
  19. hello()
  20. print(hello.__name__) # 输出的是 wrap ,这里装饰器重写了我们函数的名字,可以使用 functools.wraps 来解决
  21. # @say 的写法就是装饰器的简写方法,等同于: hi = say(hi)
  22. @say
  23. def hi():
  24.     print('hi world')
  25. hi()
  26. print(hi.__name__)

以上就是对于装饰器的基本介绍,那么这里给出一个装饰的标准写法,如下:

  1. from functools import wraps
  2. 	
  3. def say(func):
  4. 	
  5.     @wraps(func)
  6.     def wrap(*args, **kwargs):
  7.         	
  8.         print('ni hao')
  9.         return func(*args, **kwargs)
  10.     return wrap
  11. @say
  12. def hi():
  13.     print('hi world')
  14. 	
  15.     return 'ok'
  16. r = hi()
  17. print(hi.__name__) # 输出:hi
  18. print(r) # 输出:ok

以上就是关于装饰器的介绍,要想记住装饰器的实现原理并熟练运用装饰器,那就多多练习几遍!

版权归 马富天个人博客 所有

本文标题:《python 装饰器学习笔记》

本文链接地址:http://www.mafutian.com/457.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 python 正无穷(float(" inf"))和负无穷(float("-inf"))的简介【基础知识】 》 下一篇《 Python 中 arg,*args,**kwargs 简介 》

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多