如何在python中使用decorators更改函数返回值?

如何在python中使用decorators更改函数返回值?,python,decorator,Python,Decorator,我有这个函数和一个decorator@decorator(整数) 我想做一个decorator返回函数,接受整数,然后用numberplaces中的字母替换每个字母。比如说 @decorator(3) def spam(): return "ABCD EFG" 及 如何使装饰器返回函数而不是字符串 为了定义装饰师: def decorator(number): def inner(f): def decorator_f(*args, **kwargs):

我有这个函数和一个decorator@decorator(整数)

我想做一个decorator返回函数,接受整数,然后用
number
places中的字母替换每个字母。比如说

@decorator(3)
def spam():
    return "ABCD EFG"

  • 如何使装饰器返回函数而不是字符串

为了定义装饰师:

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"

为什么不使用普通方法:

def spam(number):
    s = "ABCD EFG"
    return ''.join(chr(ord(x)+number) if x.isalpha() else x for x in s)

如果必须使用decorator,请按照@Udy所示实现它们,我上面提供的一行是如何返回移位值。

decorator是否应该在末尾添加一个随机值?始终添加HIJ?还是什么?它会用
数字
位置的字母替换每个字母。e->h,f->i,g->JBE因为我的任务是使用装饰器。这正是我想要做的!非常感谢你!
@decorator(3)
def spam():
    return "ABCD EFG"
def spam(number):
    s = "ABCD EFG"
    return ''.join(chr(ord(x)+number) if x.isalpha() else x for x in s)