Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
今回は関数の中でよく使われるreturn文とprint関数との違いを簡単に説明します。
まず文法上のカテゴリーというか(英語でいう品詞?)、種類の違いを見てみましょう。
となります。return文は単純式(Simple Statement)と呼ばれるものの1つです。
ただこれはあまりにも形式的すぎる違いであるため、だから何?という感じですね。
実際にプログラミングを学習するときには、次のようにそれぞれの結果として「どんな型」になるのかが一番重要だと思います。
では具体的にみていきましょう。
まず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()を使って書いた場合の結果として、その「型」はどうなるでしょうか。次のコードを見てください。
#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’
このようなエラーが出てきました。
上述のように、
となり、型が全く異なりますので計算が出来ないのですね。よって上のようなエラーが出ます。
Python学習を始めたばかりの入門者にとっては、return文とprint関数が一見同じような動作のように思えてしまいますが、上の説明からわかるように、出力される見た目は同じようなものでも、決定的にデータの型が異なります。
プログラミングではデータの「型」(または種類や性質)を適切に考えないとエラーが出ることがよくあります。
大雑把な考え方ですが、
というイメージで最初は良いと思いますが、結果として表示される情報、あるいは結果として返ってくる情報がどんな「型」なのか意識する、そんな習慣をつけることが大切だと思います。