2016-10-03 215 views
-8

我已經定義使用Python如下功能:爲什麼這個函數返回這個值?

def output(): 
    print "Hello, world!" 

output() 

當這個腳本在Windows命令行中運行,則回覆:

Hello, world! 

我想說明的是:這是爲什麼?儘管沒有定義返回值,爲什麼還是輸出值?

+5

因爲你正在調用一個帶有'print'的方法。 'print'將會*打印*到屏幕上。 – idjaw

+2

字符串「Hello,world!」沒有被返回,但是打印到標準輸出。 –

+2

方法的默認返回值是'None'。如果你做'res = output()'並打印出'res',它將是'無'。但是你仍然會得到一些打印出來的東西,因爲在調用方法時'print'語句會運行。 – idjaw

回答

1

該方法的默認返回值爲None。如果您執行以下操作:

res = output()

,並打印出res,這將是None。默認情況下,如果未指定返回,則始終返回None

>>> def output(): 
...  print "Hello, world!" 
... 
>>> res = output() 
Hello, world! 
>>> res 
>>> type(res) 
<type 'NoneType'> 

但是,你仍然會得到的東西打印到屏幕上,因爲當該方法被稱爲print語句將運行。

0

打印將打印到標準輸出。這就是爲什麼。

+0

謝謝你的回答,但是我不太明白你在說什麼。一些更多的博覽會將不勝感激。謝謝! – seeker

1

返回值只有在思考程序如何工作的情況下才有意義。對於最終用戶來說,他們可能對返回值一無所知。

一個單獨的概念,輸出,是用戶通常看到的。在這種情況下,程序使用打印語句,輸出到名爲stdout的輸出流。該輸出流通常由程序從中運行的控制檯讀取,然後輸出到控制檯。

該函數的實際返回值是None,但它永遠不會輸出給用戶。