博主辛苦了,我要打赏银两给博主,犒劳犒劳站长。
【摘要】python 装饰器是 python 进阶部分的知识,可是平时自己用的比较少,对于它的概念,总是容易遗忘,所以写了这篇文章记录一下它的关键点,让自己能够记住它的写法。
想要了解并记住关于 python 装饰器,就记住以下 4 个知识点即可:
1、在 python 中,可以在一个函数中定义另一个函数
2、函数也能返回函数
3、可以将函数作为参数传给另一个函数
4、函数可以赋值给变量而不去执行它
def say(func):
# 在 python 中,可以在一个函数中定义另一个函数(1)
# wrap() 函数作用域只在 say() 函数内
def wrap():
print(1)
func()
print(2)
# 可以不需要在一个函数里执行另一个函数,我们可以将其作为输出返回
# 函数也能返回函数(2)
return wrap
def hello():
print('hello world')
# 可以将函数作为参数传给另一个函数(3)
# 函数可以赋值给一个变量而不去执行它(4)
hello = say(hello)
# 如果把括号放在后面,函数就会执行
# 如果在它后面不放括号,那么不会被执行,并且可以到处传递,可以赋值给别的变量
hello()
print(hello.__name__) # 输出的是 wrap ,这里装饰器重写了我们函数的名字,可以使用 functools.wraps 来解决
# @say 的写法就是装饰器的简写方法,等同于: hi = say(hi)
@say
def hi():
print('hi world')
hi()
print(hi.__name__)
以上就是对于装饰器的基本介绍,那么这里给出一个装饰的标准写法,如下:
from functools import wraps
def say(func):
@wraps(func)
def wrap(*args, **kwargs):
print('ni hao')
return func(*args, **kwargs)
return wrap
@say
def hi():
print('hi world')
return 'ok'
r = hi()
print(hi.__name__) # 输出:hi
print(r) # 输出:ok
以上就是关于装饰器的介绍,要想记住装饰器的实现原理并熟练运用装饰器,那就多多练习几遍!
版权归 马富天个人博客 所有
本文标题:《python 装饰器学习笔记》
本文链接地址:http://www.mafutian.com/457.html
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^
顶0
踩0
评论审核未开启 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||