python decorator除了def以外的东西

时间:2016-05-27 15:21:54

标签: python decorator python-decorators

python中装饰器的常用构造是

@decorator
def function(x):
    <code here>

相当于

def function(x):
    <code here>
function = decorator(function)

(至少,这是我的理解。)现在假设我们有一个函数mystery_func我们没有自己定义,但我们仍然想用decorator装饰。我们可以吗

@decorator
mystery_func

或者我们必须做什么

mystery_func = decorator(mystery_func)

获得与

相同的效果
@decorator
def mystery_func(args):
    <code here>

2 个答案:

答案 0 :(得分:1)

答案是否定的,@语法不能与任意行一起使用,您需要使用mystery_func = decorator(mystery_func)。使用@这样的SyntaxError语法是df.iloc[:0] # Give me all the rows at column position 0

答案 1 :(得分:0)

您还可以使用class decorators,这是&#34;除了&#34;之外的其他内容:

例如

@foo
@bar
class A:
  pass

但你在这里提到的是什么:

@decorator
mystery_func

SyntaxError