2016-11-30 63 views
-1

即使我已將以前的打印語句轉換爲return語句,但我的函數中有一個非常短的函數,該函數始終返回None,這裏是我所擁有的:即使它有一個返回語句,我的函數仍然返回無

def explain(self): 
    return(print('Wear a', self.getColor(), 'shirt') 

的語句將打印出來,但每次都在下一行打印None,請讓我知道我怎麼能阻止這種情況發生!

+0

嘿!如果您的查詢已解決,請不要忘記[接受其中一個答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work):) –

回答

3

這是因爲print的輸出打印在終端上,而print函數本身的值是None,這就是返回的結果。

如果要返回值,以及打印,你可以這樣做:

def explain(self): 
    string = 'Wear a' + self.getColor() + 'shirt' 
    print(string) 
    return string 

如果只返回需要的值時,只要將打印語句在上面,你可以打印它後來。

0

return聲明不是函數。它是一個控制流構造(如if-else)。這就是讓你「在函數調用之間與你一起獲取數據」的原因。所以,你不能返回print,因爲它不是一個函數,它是一個保留字。但是因爲print是一個聲明,所以您會看到它在終端上輸出,但也是None,因爲該函數沒有返回任何內容。如果你想返回一個字符串,請這樣做:

return 'Wear a ' + self.getColor() + ' shirt' 
相關問題