Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Python入門

【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文

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

愛を分かち合いましょう