defを使いこなす①return(戻り値)

pythonのコードが少しかけてくると、defを使って書いている人をよくみかけて、羨ましくなる。defの基礎を学びたい!

def(関数)とは何だ?

そもそも関数とは何だ?というお話。

中学の頃関数を習いましたが、その考えそのものです。

例えば、

y=3x

という式があった場合、yの値はxの値によって変化します。この関係を『yはxの関数である』といいます。

で、高校になると数学は単純にyがf(x)に変わります。見た目は難しそうになりますが、内容は同じ。

f(x)=3x  (内容はy=3xと一緒)

f(x)を関数、xを変数といいます。

このf(x)のxに数値を入れると『=3x』のxが変化するため、例えばxを2にすると、

f(2) = 3 × 2
f(2)=6

xを10にすると、

f(10) = 3 × 10
f(10) = 30

となるわけです。

プログラムの世界では、変数xのことを「引数」といいます。

「y = 3x + b」という関数の場合は、yの値は、xとbの値によって変化します。そのため「f(x, b) = 3x + b」と表します。

例えば、f(2, 5)なら、12になります。

んで、関数にするとどんなメリットがあるのか?という話。

関数のメリット

箇条書きにしてみました。

・コードの処理を『一連の群』として一目で分かる

・同じコードを何度も書かなくてよい

・コードが効率的かつ他の人から見ても理解しやすくなる

というメリットがあります。

def分の作り方

コードは以下のようになります。かみ砕いた詳細を下記に記します。

def 関数名(引数1, 引数2, ..., 引数n):
  関数定義(処理文)
  関数定義(処理文)
  return 戻り値


def文
defはdefinitionの頭の3文字を取ったもので、これから関数を定義することをPythonに伝えます。

関数名
defの後に半角スペースを空けて、自分で決めた関数名を書きます。

引数(ない場合もある)
丸括弧 () の中に引数を入力します。引数を複数設定する場合はカンマ区切で。関数によって、引数がある場合とない場合があります。最後にコロン( : )を書き、改行します。

関数定義(処理文)
半角スペース4つのインデントを入れます。ここに関数の機能を定義する処理文を書いていきます。

return(戻り値/返り値、ない場合もある)
処理文の最後に、returnを書いて、この関数を呼び出したときに何を出力するかを定義します。


returnのある関数

return(戻り値)のある関数を作ってみましょう。

def func1():
    return "Hey!"

shift+enter で実行しても、何もでてきません。

この関数を呼び出すには、func()と書きます。

func1()

実行結果:

'Hey!'

このようにreturn文で戻り値を定義しておくと、関数を呼び出した時にそれが返ってきます。


returnのない関数(多くの場合、print()で表す)

returnのない関数をつくってみます。

同じ内容ですが、return文を使わずに、print()を使っています。

def func2():
    print("Hey!")

shift+enter で実行しても、何もでてきません。

この関数を呼び出すには、func2()と書きます。

func2()

実行結果:

'Hey!'

デジャブ?と思うかもしれません。

アウトプットが同じなので、違いはないように感じてしまいます

しかし、全然違うのです。


returnある・なしの違い

returnがあるfunc1は、変数に代入することができます。

a=func1()
print(a)

実行結果:

'Hey!'

ところが、returnなしのfunc2は、変数に代入することができません。

a=func2()
print(a)

実行結果:

None

return文で書いた処理は、その関数を呼び出した時に、戻り値として出てきます。ない場合は、処理文が実行されるだけで戻り値はありません

この記事が気に入ったらサポートをしてみませんか?