【Python独学】関数の定義と実行
これまでは組込関数や、モジュールが持っている関数を実行してきましたが、
ここからは自分で関数を定義し実行することを学んでいきたいと思います。
関数とは
関数を作る前に、「そもそも関数とは一体どんなものなのか」や、「どんな時に関数を定義するのか」を理解しましょう。
目次
- 関数とは
- 引数とは
- 戻り値とは
- どんな時に定義する?
関数とは
まず、プログラムの話は忘れて「関数」という単語に注目してみましょう。
中学生時代に、y=2x+3のようなものを「関数」と呼んでいた記憶ありませんか?
これはxに代入する値を変えるとyの値が変わっていきますよね?
実はプログラムでもそこまで大きく変わらないんです。
y=2x+3をプログラム的に書くと以下のようになります。
def func( x ): res = 2*x+3 return res
実際にx=1、x=2を代入する処理を追加するとこんな感じです。
def func( x ): res = 2*x+3 return res print(func(1)) print(func(2))
5
7
では、実際に各パーツを解析していきましょう。
・def
y=2x+3には存在しない部分ですが、
これは今から関数を定義しますという宣言です。
・func( ):
こちらもy=2x+3には存在しない部分です。
これは今から定義する関数の名前を付けています。
・func( ):の中のx
y=2x+3でxに代入する値を受け取る変数名です。
これを引数と呼びます。
・res=2*x+3
2x+3の結果と同じ部分です。
関数の処理部分です。
今回の処理ではresという変数に処理結果を格納しています。
・return res
処理結果を呼び出し元に返しています。
これ戻り値と呼びます。
つまり、先に書いた以下の内容は。。。
def func( x ): # 「funcという名前の」「引数を一つ必要とする関数を」「定義します」! res = 2*x+3 # 処理は「渡されたxを2倍して3を足します」 return res # 「処理した結果を返します!」 print(func(1)) # xに1を代入します。 print(func(2)) # xに2を代入します。
というふうになるわけです。
y=2x+3とは全く同じというわけでは無いですが、何となくは伝わったのではないかと思います。
改めて関数定義のフォーマットを記載しておきます。
def 関数名( 引数 ):
処理1
処理2
return 戻り値
ちなみに引数は2つ以上設定することも可能です
def 関数名( 引数1, 引数2, ・・・ ):
処理1
処理2
return 戻り値
戻り値は複数設定することはできません。
引数とは
既に説明終わってしまった感がありますが改めて。
・func( ):の中のx
y=2x+3でxに代入する値を受け取る変数名です。
これを引数と呼びます。
この部分ですね。
関数を定義する際には、「これを渡してくれないと処理できないよ!」というものになりますし、
関数を使う際には、「処理する際にはこれを代入してね!」というものになります。
定義時に指定された引数の数と、呼び出す際の引数の数は原則同じでなくてはいけません。
戻り値とは
こちらも説明終わってしまった感ありますが。。。。
・return res
処理結果を呼び出し元に返しています。
これ戻り値と呼びます。
この部分ですね。
今回は解説のために戻り値がある関数を定義していますが、
戻り値のない関数を定義することも可能です。
・どんな時に定義する?
端的に言うと「同じ処理が何度もでてくる場合」です。
複数箇所に同じ処理が書かれている場合、
修正を行う必要が出てきた際に、修正料が多く修正漏れが発生する可能性がでてきます。
関数化しておいて呼び出すことで、何箇所で呼び出されていても、処理部分の修正は一箇所で済んでしまいます。
まとめ
関数の主なパーツは「宣言」「名前」「引数」「処理」「戻り値」の5つ。
それぞれのどういったものかを把握しておこう。