2015-03-05 20 views
5

Çıktının değişkene atanması gerekmeden tek bir işlev içinde yazdırıp geri dönmenin bir yolu var mı?Değişkene atamadan geri alma ve yazdırma?

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

iade ifade amacıyla saklanan o değişkeni başvurmak için bir yol var mı:

bu kodu düşünün

?

+2

Belki gibi başka işlevi yaparak: def print_and_return (değer): baskı değeri dönüş değeri Ama neyse, senin random.randrange onun fonksiyonu içine bir şey ya atar, bu yüzden yok Neden çıktıyı saklamak istemiyorsun? – Raito

+0

@Raito lütfen, kendi iyiliğin için anlamaya çalışmayın :). Bunun mümkün olup olmadığını merak ettim. –

cevap

5

Bunu yapmanın doğrudan veya "kolay" bir yolu olmadığını düşünüyorum. Bununla birlikte, bir yolu bunu basan bir dekoratör tanımlamak olabilir. Örneğin:

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)