Python 在函数结果前加上字符串

Python 在函数结果前加上字符串,python,python-3.x,Python,Python 3.x,编辑: 作为练习,我需要在一个函数的结果前面加上一个字符串,该函数将在稍后定义。我认为使用一个装饰师,我显然错了;有什么建议吗 旧的: 这个代码将打印“女孩”,我想它打印“你好女孩”。 有什么办法吗?一个装饰程序用一个包装版本替换函数。如果再次更换,则装饰版本将消失 真的,你不应该这样做。但请记住,装饰者只是一个包装;如果要动态替换函数,那么首先不要修饰它们,只需在调用时应用包装器即可: print(my_decorator(myfunc)()) 如果您显式地将装饰器应用于重新定义的函数,则装

编辑: 作为练习,我需要在一个函数的结果前面加上一个字符串,该函数将在稍后定义。我认为使用一个装饰师,我显然错了;有什么建议吗

旧的:

这个代码将打印“女孩”,我想它打印“你好女孩”。
有什么办法吗?

一个装饰程序用一个包装版本替换函数。如果再次更换,则装饰版本将消失

真的,你不应该这样做。但请记住,装饰者只是一个包装;如果要动态替换函数,那么首先不要修饰它们,只需在调用时应用包装器即可:

print(my_decorator(myfunc)())

如果您显式地将装饰器应用于重新定义的函数,则装饰器可以工作,正如其他人所提到的:

@my_decorator
def myfunc():
    return "boy"

@my_decorator
def myfunc():
    return "girl"

if __name__ == "__main__":

    print(myfunc())
如果您不能静态地执行此操作,您仍然可以使用您的decorator代码按功能执行此操作:

def myfunc():
    return "spot"

myfunc = my_decorator(myfunc)

为什么要覆盖第一个定义?你的问题的解决方案可能是不这样做。装潢师的工作方式和你想让他们工作的方式不同,你不能。您可以随时替换对象,您在这里就是这样做的。在替换名称或调用对象时,您必须重新应用装饰程序。我这样做是为了练习。我需要在一个函数的结果前面加上一个字符串,该函数将在第二时刻定义。我认为使用一个装饰师,我显然错了;我编辑了问题谢谢,所以使用装饰器是我需要做的错误方法,我编辑了问题
def myfunc():
    return "spot"

myfunc = my_decorator(myfunc)