深入了解和应用深入了解和应用Python 装饰器装饰器 @decorator
在编程过程中,经常遇到这样的场景:登录校验,权限校验,日志记录等,这些功能代码在各个环节都可能需
要,但又十分雷同,通过装饰器来抽象、剥离这部分代码可以很好解决这类场景,这篇文章主要介绍了Python
的装饰器 @decorator,探讨了使用的方式,需要的朋友可以参考下
Python的装饰器(decorator)是一个很棒的机制,也是熟练运用Python的必杀技之一。装饰器,顾名思义,就是用来装饰
的,它装饰的是一个函数,保持被装饰函数的原有功能,再装饰上(添油加醋)一些其它功能,并返回带有新增功能的函数对
象,所以装饰器本质上是一个返回函数对象的函数(确切的说,装饰器应该是可调用对象,除了函数,类也可以作为装饰
器)。
在编程过程中,我们经常遇到这样的场景:登录校验,权限校验,日志记录等,这些功能代码在各个环节都可能需要,但又十
分雷同,通过装饰器来抽象、剥离这部分代码可以很好解决这类场景。
装饰器是什么?装饰器是什么?
要理解Python的装饰器,首先我们先理解一下Python的函数对象。我们知道,在Python里一切都是对象,函数也不例外,函
数是第一类对象(first-class objects),它可以赋值给变量,也可以作为list的元素,还可以作为参数传递给其它函数。
函数可以被变量引用函数可以被变量引用
定义一个简单的函数:
def say_hi():
print('Hi!')
say_hi()
# Output: Hi!
个变量say_hi2来引用say_hi函数:
say_hi2 = say_hi
print(say_hi2)
# Output: <function say_hi at 0x7fed671c4378>
say_hi2()
# Output: Hi!
上面的语句中say_hi2 和 say_hi 指向了同样的函数定义,二者的执行结果也相同。
函数可以作为参数传递给其它函数函数可以作为参数传递给其它函数
def say_more(say_hi_func):
print('More')
say_hi_func()
say_more(say_hi)
# Output:
# More
# Hi
在上面的例子中,我们把say_hi函数当做参数传递给say_more函数,say_hi 被变量 say_hi_func 引用。
函数可以定义在其它函数内部函数可以定义在其它函数内部
def say_hi():