【发布时间】:2018-05-30 07:26:27
【问题描述】:
我只是想熟悉 Python 中的装饰器,但作为该语言的新手,我不明白为什么会在下面得到这个:
我的带参数装饰器代码:
def decorator_with_argument(fun_name):
def decorator_func(func):
'''decorator function which will provide additional functionality to my original function'''
print("Inside decorator")
def wrapper_func(*args,**kwargs):
print("Inside wrapper")
print("Calling function {} with parameters {} {}".format(fun_name, *args, **kwargs))
return func(*args,**kwargs)
return wrapper_func
return decorator_func
@decorator_with_argument("Addition")
def addition_func(a,b):
print(a+b)
@decorator_with_argument("Subtraction")
def subtraction_func(a,b):
print(a-b)
addition_func(10,15)
subtraction_func(25,10)
输出:
Inside decorator
Inside decorator
Inside wrapper
Calling function Addition with parameters 10 15
25
Inside wrapper
Calling function Subtraction with parameters 25 10
15
谁能解释一下为什么我得到两次“内部装饰器”?
【问题讨论】:
标签: python python-3.x python-decorators