2021年10月28日InPython今回は関数の中でよく使われるreturn文とprint関数との違いを簡単に説明します。文法上のカテゴリーというか(英語でいう品詞?)、種類の違いを見てみましょう。returnは文(Python上の文は英語でステートメント)printは関数(関数は英語でファンクション)となります。Statement)と呼ばれるものの1つです。これはあまりにも形式的すぎる違いであるため、だから何?という感じですね。実際にプログラミングを学習するときには、次のようにそれぞれの結果として「どんな型」になるのかが一番重要だと思います。具体的にみていきましょう。まとめreturnとprintの違いは結果の「型」に注目returnの場合まずreturn文からいきましょう。以下のコードを見て下さい。a#2type(fnc_01())まず#1の部分でfnc_01という名前の関数を定義しました。変数aに1を代入して、その変数aを返す(return)するだけの関数です。「fnc_01()」は、関数名に()がついていますので、その関数を実行した結果が現れます。fnc_01()を実行すると、1が代入されたaが返ってきます。#2の部分では、その返ってきたaの型を調べています。type()は型を調べる関数です。今、aの中身は「整数としての1」(文字としての1ではありません)ですから、その型は整数という型を意味する「int」が出力されます。numbers」の頭文字です。上のコードではint型の1という整数が返ってくる点に注目してください。そのため、続けて次のような足し算を行ってみると、fnc_01()+2この結果、「3」という数字が表示されます。fnc_01()はint型、そして数字の2もまたint型です。(type(2)とすればintが表示されます)このようにint型+int型となる結果、整数の3(当然その型はint)となるわけです。次に同じ関数をprint()を使って書いた場合の結果として、その「型」はどうなるでしょうか。次のコードを見てください。print(b)#2type(fnc_02())関数名と変数が変わっていますが、やってることは上と同じです。決定的に違うのはreturn文ではなく、print()関数を使っている点です。この場合#2の部分の結果として、型は「NoneType」と表示されます。こちらも続けて以下の足し算を行ってみましょう。‘int’このようなエラーが出てきました。上述のように、fnc_02を実行した結果であるfnc_02()はNoneType数字の2はint型となり、型が全く異なりますので計算が出来ないのですね。よって上のようなエラーが出ます。まとめPython学習を始めたばかりの入門者にとっては、return文とprint関数が一見同じような動作のように思えてしまいますが、上の説明からわかるように、出力される見た目は同じようなものでも、決定的にデータの型が異なります。プログラミングではデータの「型」(または種類や性質)を適切に考えないとエラーが出ることがよくあります。結果を利用してさらになんらかの処理をしていく→return文というイメージで最初は良いと思いますが、結果として表示される情報、あるいは結果として返ってくる情報がどんな「型」なのか意識する、そんな習慣をつけることが大切だと思います。【Python入門】関数の使い方の注意点。関連投稿Pythonの抽象基底クラス(ABC)の基本を解説。