可以修饰变量吗?

tae*_*esu 6 python decorator python-decorators

在python中装饰函数或方法很棒。

@dec2
@dec1
def func(arg1, arg2, ...):
    pass
#This is equivalent to:

def func(arg1, arg2, ...):
    pass
func = dec2(dec1(func))
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以在python中修饰变量。

@capitalize
@strip
foo = ' foo '

print foo # 'FOO'
#This is equivalent to:
foo = foo.strip().upper()
Run Code Online (Sandbox Code Playgroud)

我无法通过搜索找到关于该主题的任何内容。

Mar*_*ers 6

不,装饰器语法仅对函数和类有效。

只需将值传递给函数:

foo = capitalize(strip(' foo '))
Run Code Online (Sandbox Code Playgroud)

或将变量替换为结果:

foo = ' foo '
foo = capitalize(strip(foo))
Run Code Online (Sandbox Code Playgroud)

装饰器之所以存在,是因为您不能仅在函数调用中包装函数或类声明。简单的变量就可以

  • 我猜他们想严格遵守方法,然后。 (3认同)