我发现,我可以用两种不同的方式装饰函数,以实现相同的函数“装饰”:
def greeting(expr):
def greeting_decorator(func):
def function_wrapper(x):
print(expr + ", " + func.__name__ + " returns:")
func(x)
return function_wrapper
return greeting_decorator
def foo(x):
return x
greeting2 = greeting("Good morning!")
foo = greeting2(foo)
或者。。。在
^{pr2}$请注意,第一个示例可以更改为使用“at”符号:
@greeting("Good morning!")
def foo(x):
return x
但是在第二个decorator函数示例中使用at符号会导致崩溃,这是可以理解的。在
我的问题是,除了要包装的函数之外,在decorator函数中包含其他参数的方法中,哪一种是首选的?第二种方法似乎更容易让人绞尽脑汁,如果需要更多额外的参数,可能会更具伸缩性。使用它有什么缺点吗?在
目前没有回答
相关问题 更多 >
编程相关推荐