在函数resu前面加一个字符串

2024-04-19 21:45:51 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑: 作为练习,我需要在一个函数的结果前面加上一个字符串,这个函数将在第二时刻定义。我虽然使用装饰工,但我显然错了;有什么建议要做吗?你知道吗

旧的:

def my_decorator(func):
    def wrapped(*args, **kwargs):
        return "hello {0}".format(func(*args, **kwargs))
    return wrapped

@my_decorator
def myfunc():
    return "boy"

def myfunc():
    return "girl"

if __name__ == "__main__":

    print(myfunc())

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


Tags: 函数字符串编辑return定义mydefargs
2条回答

decorator用包装的版本替换函数。如果你再换一次,装饰版就不见了。你知道吗

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

print(my_decorator(myfunc)())

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

@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)

相关问题 更多 >