在不将结果赋值给变量的情况下返回和打印?

5

请问是否有一种方法可以在一个函数中打印和返回值而不需要将输出赋值给变量?

考虑以下代码:

def secret_number(secret_number_range):
    return random.randrange(1, secret_number_range + 1)

有没有办法引用存储为返回语句目的的那个变量?

2
也许可以通过创建另一个函数来实现: def print_and_return(value): print value return value 但无论如何,你的 random.randrange 将会将某个值分配给它的函数,所以我不明白为什么你不想存储输出结果? - Raito
@Raito,请你为了自己的利益不要试着理解: )。我只是好奇这是否有可能。 - Blücher
1个回答

5

我认为没有任何直接或“简单”的方法可以实现这一点。然而,一种方法是定义一个装饰器来打印这个内容。例如:

    import random        

    def print_return(func):
        def func_wrapper(param):
            rv =   func(param)
            print("Return value: {0}".format(rv))
            return rv
        return func_wrapper

    @print_return
    def secret_number(secret_number_range):
        return random.randrange(1, secret_number_range + 1)

    # with this, this call would result in "Return value: 3" being printed.
    c=secret_number(4)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接