装饰器

什么是装饰器

  • 也是一种函数
  • 可以接受函数作为参数
  • 可以返回函数
  • 接收一个函数,内部对其处理,然后返回一个新函数,动态的增强函数功能
  • c函数a函数中执行,在a函数中可以选择执行不执行c函数,也可以对c函数结果进行二次加工处理

装饰器的定义

1
2
3
4
def out(func_args): 外围函数
def inter(*args, **kwargs): 内嵌函数
reture func_args(*args, **kwargs)
return inter 外围函数返回内嵌函数

装饰器的用法

  • 被调用的函数直接作为参数传入装饰器外围函数括弧

  • 将装饰器与被调用函数绑定在一起

  • @符号 + 装饰器函数放在被调用函数的上一行 , 被调用的函数正常定义 , 只需要直接调用被执行函数即可

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# coding:utf-8

def check_str(func):
print('func:', func)
def inner(*args, **kwargs):
print('args:', args, kwargs)
result = func(*args, **kwargs)
if result == 'ok':
return 'result is %s' % result
else:
return 'result is failed:%s' % result
return inner

@check_str
def test(data):
return data

result = test(data='no')
print(result)

result = test('ok')
print(result)