へたっぴpythonista

ド素人pythonistaとして、日々の学習成果や気づいたことについて書きます。

returnステートメントのある関数、ない関数をprintすると

関数をprint文で呼び出す際に、不必要なNoneが求めている返り値と一緒に返されるのが気になったので調べてみました。

Random 'None' output from basic python function - Stack Overflowを参考にしました。

結論から言えばreturnステートメントの有無が問題だったようです。returnステートメントは、実は呼び出されなかった場合に自動的に「見えない」Noneオブジェクトを返すという性質があります。だからreturnステートメントのない関数をprint文で呼び出すと、このNoneオブジェクトも一緒にprintされるのです。

 

つまり

def sum (a,b):

       print(a+b,='') という関数は実際には

 

def sum (a,b):

       print(a+b,end='')

       return None  であり、printするとa+b ,Noneが出力されるわけです。

 

関数において、基本的にreturnステートメントはあってもなくても良いですが、printで呼び出す関数については、不要なNoneを出力しないためにも、返り値はreturnステートメントで指定しましょう。