【Python入門】関数で使うreturn文とprint関数の違いについての初歩的な説明

Pythonのreturn文とprint関数の違いについて

今回は関数の中でよく使われるreturn文とprint関数との違いを簡単に説明します。

まず文法上のカテゴリーというか(英語でいう品詞?)、種類の違いを見てみましょう。

  • returnは文(Python上の文は英語でステートメント)
  • printは関数(関数は英語でファンクション)

となります。return文は単純式(Simple Statement)と呼ばれるものの1つです。

ただこれはあまりにも形式的すぎる違いであるため、だから何?という感じですね。

実際にプログラミングを学習するときには、次のようにそれぞれの結果として「どんな型」になるのかが一番重要だと思います。

では具体的にみていきましょう。

returnとprintの違いは結果の「型」に注目

returnの場合

まずreturn文からいきましょう。以下のコードを見て下さい。

#1
def fnc_01():
    a=1
    return a

#2
type(fnc_01())
 

まず#1の部分でfnc_01という名前の関数を定義しました。

変数aに1を代入して、その変数aを返す(return)するだけの関数です。

「fnc_01()」は、関数名に()がついていますので、その関数を実行した結果が現れます。fnc_01()を実行すると、1が代入されたaが返ってきます。

#2の部分では、その返ってきたaの型を調べています。type()は型を調べる関数です。

今、aの中身は「整数としての1」(文字としての1ではありません)ですから、その型は整数という型を意味する「int」が出力されます。

intは英語でいう「integer」または「integral numbers」の頭文字です。

とにかく上のコードではint型の1という整数が返ってくる点に注目してください。

そのため、続けて次のような足し算を行ってみると、


fnc_01()+2

この結果、「3」という数字が表示されます。fnc_01()はint型、そして数字の2もまたint型です。(type(2)とすればintが表示されます)

このようにint型+int型となる結果、整数の3(当然その型はint)となるわけです。

print()関数の場合

次に同じ関数をprint()を使って書いた場合の結果として、その「型」はどうなるでしょうか。次のコードを見てください。

#1
def fnc_02():
    b=1
    print(b)


#2
type(fnc_02())

関数名と変数が変わっていますが、やってることは上と同じです。決定的に違うのはreturn文ではなく、print()関数を使っている点です。

この場合#2の部分の結果として、型は「NoneType」と表示されます。

こちらも続けて以下の足し算を行ってみましょう。

fnc_02()+2

これを実行すると、

TypeError: unsupported operand type(s) for +: ‘NoneType’ and ‘int’

このようなエラーが出てきました。

上述のように、

  • fnc_02を実行した結果であるfnc_02()はNoneType
  • 数字の2はint型

となり、型が全く異なりますので計算が出来ないのですね。よって上のようなエラーが出ます。

まとめ

Python学習を始めたばかりの入門者にとっては、return文とprint関数が一見同じような動作のように思えてしまいますが、上の説明からわかるように、出力される見た目は同じようなものでも、決定的にデータの型が異なります。

プログラミングではデータの「型」(または種類や性質)を適切に考えないとエラーが出ることがよくあります。

大雑把な考え方ですが、

  • 結果を単純に表示させるだけ→print()関数
  • 結果を利用してさらになんらかの処理をしていく→return文

というイメージで最初は良いと思いますが、結果として表示される情報、あるいは結果として返ってくる情報がどんな「型」なのか意識する、そんな習慣をつけることが大切だと思います。

やっぱりプログラミングは独学だとわかりにくいですよね、そこでスクールや動画による解説を利用しましょう!

Tech Academy

厚切りジェイソンのCMでおなじみのプログラミングスクール。自宅でオンライン受講OK。現役のプロが一人一人に専属メンターになってくれ、質問すればすぐに回答。転職保証あり

Udemy

世界最大級のオンライン学習動画サービス。AI・データサイエンスなど最先端のプログラミング講座からビジネススキル講座まで10万以上の講座から選び放題。講師に掲示板から直接に質問もできる。