我的函数继续返回None,即使它有一个return语句

时间:2016-11-30 06:45:21

标签: python function

我有一个非常短的函数位于一个不断返回None的类中,即使我已将之前的print语句转换为return语句,这里有我所拥有的:

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

该声明将打印出来,但每次在下一行打印None时,请告诉我如何阻止这种情况发生!

2 个答案:

答案 0 :(得分:3)

这是因为print的输出打印在终端上,print函数的值本身是None,这是返回的内容。

如果您希望返回值并打印它,您可以执行以下操作:

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

如果只需要返回值,只需删除上面的print语句,然后再打印即可。

答案 1 :(得分:0)

return语句不是函数。它是一个控制流构造(如if-else)。它可以让你“在函数调用之间随身携带数据”。所以,你不能返回print,因为它不是一个函数,它是一个保留字。但是由于print是一个语句,你会在终端上看到它的输出,但None也是如此,因为函数没有返回任何内容。如果您想返回一个字符串,请执行以下操作:

return 'Wear a ' + self.getColor() + ' shirt'