什么是装饰器(decorator)?
什么是装饰器(decorator)?
这是每次面试我都会被问到的另一个问题。它本身就值得写一篇文章。如果你能自己用它编写一个例子,那么说明你已经做好了准备。
装饰器允许通过将现有函数传递给装饰器,从而向现有函数添加一些额外的功能,该装饰器将执行现有函数的功能和添加的额外功能。
我们将编写一个装饰器,该装饰器会在调用另一个函数时记录日志。
编写装饰器函数logging。它接受一个函数func作为参数。它还定义了一个名为log_function_called的函数,它先执行打印出一些“函数func被调用”的信息(print(f'{func} called.')),然后调用函数func()。较后返回定义的函数。
def logging(func):
def log_function_called():
print(f'{func} called.')
func()
return log_function_called
让我们编写其他两个函数,我们较终会将装饰器添加到其中(但还没有)。
def my_name():
print('chris')def friends_name():
print('naruto')my_name()
friends_name()
#=> chris
#=> naruto
现在将装饰器添加到上面编写的两个函数之中。
@logging
def my_name():
print('chris')@logging
def friends_name():
print('naruto')my_name()
friends_name()
#=> <function my_name at 0x10fca5a60> called.
#=> chris
#=> <function friends_name at 0x10fca5f28> called.
#=> naruto
现在,你了解了如何仅仅通过在其上面添加@logging(装饰器),就能够轻松地将日志添加到我们编写的任何函数中。
更多培训课程,学习资讯,课程优惠等学校信息,请进入 太原小店区Web培训太原迎泽区Python培训太原杏花岭区Linux云计算培训 网站详细了解,免费咨询电话:400-998-6158