2015-03-05 2 views
5

Любопытно, есть ли способ как распечатать, так и вернуть в пределах одной функции без назначения вывода переменной?Возврат и печать без назначения переменной?

Рассмотрим этот код:

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

Есть ли способ, чтобы ссылаться на эту переменную, хранящуюся в целях возвращения заявления?

+2

Может быть, сделав еще одну функции, как: Защиту print_and_return (значение): значения печати возвращаемого значения Но в любом случае, ваш random.randrange назначит либо что-то в его функцию, так что я не понять, почему вы не хотите хранить результат? – Raito

+0

@ Raito, пожалуйста, не пытайтесь понять ради себя :). Мне было любопытно, возможно ли это. –

ответ

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) 
Смежные вопросы