簡體   English   中英

返回結果並在函數結束時打印它之間的最佳效果是什么?

[英]What's the best between return the result and print it at the end of the function?

假設我們定義一個函數,然后用以下結尾:

def function():
     # ...
     return result
# To see the result, we need to type:
print(function())

另一種選擇是使用print結束一個函數:

def function():
     # ...
     print(result)

# no need of print at the call anymore so
function()

問題:我可以用return語句結束函數,通過function()獲取它嗎?
我的意思是我不關心函數是否保存結果。 但是該函數可以有幾個不同的結果,即我需要在某個時刻退出循環。 主要思想是在屏幕上獲得輸出。
所以,請讓我知道我的變體是否正常,或者它不是'優雅'編碼。 謝謝!

如果return print(result) ,則基本上return None因為print()返回None 所以這沒有多大意義。

我會說return result更清晰,並讓調用者決定是print()它還是用它做任何其他事情。

最簡潔的方法是使用return語句 通常,函數返回結果,並且此結果可以在其他算法之后處理。 也許你不需要在你的情況下得到一個變量的結果,但想象你在一周,一個月做...

最好的方法是將print委托給主程序本身。 您將更輕松地管理程序中的數據,正如我所說,您可以鏈接功能。

想象一下兩個函數a(arg)b(arg)返回兩個計算。 使用b函數中的print語句,您將無法執行此操作:

a(b(10))

因為a將在參數中接收None值(因為默認情況下函數返回None ,最后是print語句的情況)。

TL; DR :大部分時間都遵循這種模式:

def get_full_name(arg1, arg2, ...):
    # Do cool stuff
    return res   # <- result of the function


print get_full_name('foo', 'bar')
full_name = get_full_name('Maxime', 'Lorant')
print some_other_function(full_name)
# etc.

print功能不會返回任何內容; 它只會打印輸出到控制台的東西。 因此從print函數返回返回值並沒有多大意義。 你沒有按照定義返回任何內容。

所以,除非你想提前結束這個功能,否則你沒有理由在這種情況下使用return 只打印結果(不使用return )很好,更清晰。

此外,如果要返回print功能打印的實際內容,則應該執行此操作,然后將其留給調用者以決定是否打印。

如果你想使用print(function()) (這對我來說聽起來最合理),那么只需返回函數的結果:

def function ():
    # ...
    return result

如果您只關心打印它,您應該這樣做:

print(result)

在函數結束時,但通常如果您嘗試使用結果然后只返回它然后您可以使用結果並打印它

你可能不應該做return print(result)只是做或者在函數外面打印它

如果你使用return print(result)你沒有返回任何東西,所以它毫無意義

不,你不能。 當你調用一個函數時,返回的值是print()(不是結果的值)

您可以使用一個關鍵字參數來切換您是否希望在從函數返回之前打印結果:

def func(arg1, arg2,verbose=True):
    # do cool stuff
    # 'result' is what it all produced
    if verbose:
        print result
    return result

然后只需調用func(arg1,arg2,...,verbose=False)將其關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM