2016-11-30 29 views
-1

私は以前にprintステートメントをreturnステートメントにしていましたが、Noneを返すクラス内に非常に短い関数があります。 :私の関数は返り文を持っていても返りません

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

ステートメントがプリントアウトされますが、それは次の行にNoneを出力するたびに、私は私が起きてからこれを停止することができますか教えてください!

+0

Hey!クエリが解決された場合は、[回答の1つを受け入れる](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)を忘れないように:) –

答えて

3

これは、printの出力が端末に印刷され、print関数の値がNoneで返されるためです。のみ必要とされている値を返す場合は、単に上記でprint文を削除し、印刷することができ

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' 
関連する問題