这可能是操作系统问题,因为我在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()
答案 0 :(得分:1)
然后你使用特殊的keywoard" @ func_name" 为了通过 进入函数的下一行参数
那不是装饰者的工作方式。您可以将参数传递给像这样的装饰器
@c("of python")
def decorate_this_func():
pass
但为了实现这一点,你需要稍微调整你的装饰功能。
请阅读https://stackoverflow.com/a/1594484/1843331
它是装饰器的优秀解释,它们如何工作,如何使用装饰器的参数等等。