变量可以修饰吗?

2022-04-07 00:00:00 python python-decorators decorator

问题描述

在Python中修饰函数或方法非常棒。

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

def func(arg1, arg2, ...):
    pass
func = dec2(dec1(func))

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

@capitalize
@strip
foo = ' foo '

print foo # 'FOO'
#This is equivalent to:
foo = foo.strip().upper()

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


解决方案

否,修饰符语法仅对函数和类有效。

只需将值传递给函数:

foo = capitalize(strip(' foo '))

或将变量替换为结果:

foo = ' foo '
foo = capitalize(strip(foo))

装饰符的存在是因为您不能只将函数或类声明包装在函数调用中;您可以包装简单的变量。

相关文章