Python 定义修饰函数而不使用@
假设我有一个decorator foo()并将其应用于bar(),如下所示:Python 定义修饰函数而不使用@,python,Python,假设我有一个decorator foo()并将其应用于bar(),如下所示: @foo def bar(): pass foo(bar()) 我知道有一种方法可以像这样装饰已经定义好的函数: @foo def bar(): pass foo(bar()) 但是如何在没有语法糖的情况下修饰函数呢?一般来说,修饰 @foo def bar(): pass 是以下内容的简写: def bar(): pass bar = foo(bar) # note th
@foo
def bar():
pass
foo(bar())
我知道有一种方法可以像这样装饰已经定义好的函数:
@foo
def bar():
pass
foo(bar())
但是如何在没有语法糖的情况下修饰函数呢?一般来说,修饰
@foo
def bar():
pass
是以下内容的简写:
def bar():
pass
bar = foo(bar) # note the missing (); do not call bar
装饰器将函数本身作为参数,而不是函数调用的结果。
bar=foo(bar)
谢谢,这就是我一直在寻找的。我可以再问你们一个问题吗?若bar是用参数定义的呢?那怎么装饰呢?另外,我可以在8分钟内接受您的答案。@designer完全相同,无论参数如何。foo
的实现必须处理参数foo
将(在大多数情况下)返回一个函数,该函数可以处理与bar
-