2016-11-30 83 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' 
相关问题