我有这个功能和装饰器@decorator(整数)
def spam():
return "ABCD EFG"
def decorator(number):
def inside(function):
*do something*
return *somthing of type string*
return inside
我想让装饰器返回FUNCTION,接受整数并用随后在number
个地方的字母替换每个字母。例如
@decorator(3)
def spam():
return "ABCD EFG"
和
>>> print(spam())
"DEFG HIJ"
答案 0 :(得分:4)
为了定义装饰器:
def decorator(number):
def inner(f):
def decorator_f(*args, **kwargs):
result = f(*args, **kwargs)
#make some manipulation on result
return result
return decorator_f
return inner
然后你就可以使用它:
@decorator(3)
def spam():
return "ABCD EFG"
答案 1 :(得分:0)
为什么不使用常规方法:
def spam(number):
s = "ABCD EFG"
return ''.join(chr(ord(x)+number) if x.isalpha() else x for x in s)
如果你必须使用装饰器,请在@Udy显示时实现它们,上面提供的行是你如何返回移位值。