python装饰器
且任容枯 Lv4

不带参数的装饰器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def dolog(func):
def wrapper(*args, **kwargs):
print(f"Calling function '{func.__name__}' with arguments {args} and {kwargs}")
result = func(*args, **kwargs)
print(f"Function '{func.__name__}' returned {result}")
return result
return wrapper


# dolog(func)(a, b)

@dolog
def func(a , b):
return a + b


print(func(2, 3))

Calling function 'func' with arguments (2, 3) and {}
Function 'func' returned 5
5

带参数的装饰器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def dolog(returns=False):
def decorator(func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
print(f"Function '{func.__name__}' called with args: {args}, kwargs: {kwargs}")
if returns:
print(f"Function '{func.__name__}' returned: {result}")
return result
return wrapper
return decorator


# dolog(returns=True)(func)(a, b)

@dolog(returns=False)
def func(a , b):
return a + b


print(func(2, 3))