2014-08-28 28 views
0

假設我有這個函數funct,它接受一個參數並返回它。函數:return和orprint

def funct(arg): 
    return arg 

如果打印funct,應輸出None

print funct(None) 

如果我只是運行funct,它將不會打印任何東西。

funct(None) 

現在假設我想arg使用兩種以上兩種方式進行輸出無論哪種方式,我該怎麼辦呢?我已經試過這個,但它有它自己的問題。

def funct(arg): 
    print arg 
    return arg 

我該如何使功能打印arg兩種方式?

+0

你是什麼意思「它有它自己的問題」? – Dalek 2014-08-28 23:40:15

+0

你看到了什麼問題? – asdf 2014-08-28 23:42:21

+0

你是說你想'arg'只打印一次,無論你是用'funct(arg)'還是'print funct(arg)'調用它? – dano 2014-08-28 23:42:43

回答

3

的只是局部的解決方案,我能想到的是添加指定是否要print關鍵字參數:

def funct(arg, do_print=True): 
    if do_print: 
     print(arg) 
    return arg 

那麼這兩個將打印arg只有一次:

print funct(None, do_print=False) 
funct(None) 

否則,我不認爲這是可能的。 funct無法知道主叫方是否會返回其返回的值print

0

你必須認識到「功能內」和「功能外」之間的區別。當你在功能中時,你可以決定打印這個值。但是你不能控制在函數之外發生的事情。

同樣,當您將值返回給函數的調用者時,您也可以決定在那裏打印它。如果要打印一次,只需返回該值並打印該函數的返回值即可。這樣,您可以正常使用該功能,並且如果需要,您可以打印返回值。這將最多打印一次該值。

所以就是這樣。