x装饰器语法
# 装饰器
Python的装饰器是面试常被问到的问题之一,如果你的简历里描述会Python.那么大概率会被问到.
那么我们应该怎么回答这个问题呢?
这里我从几个角度来解释装饰器的作用,大家可以挑选符合自己的说法
# 1.python装饰器原理基础
Python中的装饰器,本质上就是一个高阶函数,这里高阶函数指定就是"一个返回值是函数的函数"
# 2.装饰器的语法
在python中使用装饰器,有两个组成部分.
①@符号调用装饰器
②定义被装饰的方法
范例如下:
@装饰器名字
定义被装饰的函数
@logger
def func():
pass
1
2
3
2
3
# 3.一般用来做什么?
装饰器可以在不修改函数的情况下,增加额外的功能.这是官方给装饰器的定义
实际上我们会把一些业务功能之外的,附属需求用装饰器来实现.比如:为我们的函数添加日志记录,性能监控器,埋点计数器.大家也都知道,修改写好的函数是非常麻烦并且容易出错的一件事.所以很适合"在不修改函数内部代码的前提下,为它包装一些额外的功能"也就是装饰器
# 4.如何编写一个装饰器
# 1.定义def关键字一个函数,唯一特殊的是它将接收另一个函数.
# 目的:并在接收函数前后添加逻辑
# 1.1定义子方法(经常叫wrapper)来编辑装饰逻辑.为了传递 被修饰函数的参数,所以使用"可变参数"
# 1.1.1 如果想编写 "前置"逻辑,在这里写
# 1.1.2 调用 被修饰函数 ,也就是执行它
# 1.1.3 如果想写 "后置" 逻辑,那么在这里写
# 固定写return wrapper
# 2.如何使用它?
# 使用@符号表示调用装饰器
# 调用的装饰器,会对它下一行的"函数定义(def func())"生效
#
# 3.如何定义一个带参数的装饰器?
# 在普通装饰器(1)的基础上,再套一层函数定义,并且接收 装饰器参数
#
# def func(var):
# def wrapper(func):
# def core(*args,**kwargs):
# # 根据装饰器参数,进行逻辑判断
# if var == 0 :
# print('逻辑1')
# if var== 1 :
# print('逻辑2')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
上次更新: 2023/09/05, 02:16:11