装饰器 - 在Python中抛出无效语法

时间:2015-02-27 08:10:56

标签: python decorator

这可能是操作系统问题,因为我在youtube视频中看到人们在基于Linux的系统中演示如何在python中使用装饰器。

所以我试着和装饰师一起玩。在通常的形式中,首先创建它的函数,然后使用特殊的keywoard" @ func_name"为了将下一行参数传递给函数。这种利用装饰器的特殊方法不起作用。我在PyDev(Eclipse)中尝试过,它只是读作语法错误。我也尝试过互动式Python。

目前正在运行Windows OS 7 Python版本2.78

以下是更具体的例子

def c(n):
    def d():
        return "Hello world",n
    return d()


c=c("of Python")
print c
output: ('Hello world', 'of Python')


@c
"of Python"
output:    "of Python?"
               ^
SyntaxError: invalid syntax

根据Jon的回答

创建了一个工作版本
def c(n):
    def d():
        return "Hello world" + n()
    return d


@c
def decorate_this_func():
    return " python"

print decorate_this_func()

1 个答案:

答案 0 :(得分:1)

  

然后你使用特殊的keywoard" @ func_name" 为了通过   进入函数的下一行参数

那不是装饰者的工作方式。您可以将参数传递给像这样的装饰器

@c("of python")
def decorate_this_func():
    pass

但为了实现这一点,你需要稍微调整你的装饰功能。

请阅读https://stackoverflow.com/a/1594484/1843331

它是装饰器的优秀解释,它们如何工作,如何使用装饰器的参数等等。