【Day9】Python入門 5.2:引数と戻り値

目次

要約

本日は、Pythonで以下を学びました。

引数と戻り値

引数、複数の引数を渡す

・戻り値、関数呼び出しの正体

・関数の連携


はじめに

前回はオリジナルの関数について学びました。

​今回は、引数と戻り値について学習します。


引数と戻り値

引数

原則として、関数の外部から関数の内部にあるローカル変数の読み書きはできません。

必要な時には関数の呼び出し時に、引数(argument)を使ってデータを送り込むことができます

関数で引数を使うには、関数定義ではデータを受け取ること、呼び出し側ではデータを渡すこときちんと表明する必要があります

なお、呼び出し側で渡すデータも、それを受け取る関数側のローカル変数も、どちらも引数と称されます

両方を厳密に区別したい場合は、渡すデータを実引数、そのデータを受け取る変数を仮引数と呼びます

オリジナル関数に引数を受け渡ししてみましょう。

#hello関数に引数を引き渡す
def hello(license):
    print(f'私の持っている資格は{license}です。')

hello('看護師')
hello('保健師')
hello('医療情報技師')

引数でオリジナル関数の使い回しが楽になりますね!


複数の引数を渡す

引数は1つだけでなく、複数を渡すこともできます

次の例は3つの引数を受け取るprofile 関数を定義し、呼び出しています。

#3つの引数を受け取るprofile関数を定義する
def profile(name,age,license):
    print(f'私の名前は{name}、年齢は{age}歳です。')
    print(f'私の持っている資格は{license}です。')

profile('城島', 31, '看護師,保健師,医療情報技師')

profile 関数の呼び出し時に指定した、「城島」「31」「看護師,保健師,医療情報技師」の3つのデータが、

それぞれ変数name、age、licenseに引き渡されます。

引数は、呼び出し時に記述した順に従って受け取られるため、渡す順番を間違えないように注意しましょう

引数を利用する関数の定義

def 関数名(引数1, 引数2, ・・・) :

  処理

引数を利用する関数の呼び出し

関数名(引数1, 引数2, ・・・)

引数として引き渡せるデータ

引数には、数値や文字列はもちろん、コンテナも引き渡すことができる


戻り値

引数は、「呼び出し元から関数へデータを渡す」しくみでした。

逆に、「関数から呼び出し元へデータを渡す」しくみが戻り値(return value)です

戻り値を返す関数を定義するには、次の構文を用います。

引数と戻り値を利用する関数の定義

def 関数名(引数1, 引数2, …) :

  処理

  return 戻り値

※引数は複数の指定が可能だが、戻り値は1つのみ。

関数定義の最終行に登場したのはreturn 文といいます。

その関数の実行を終了するとともに、return の後ろに記述された変数や値を呼び戻し元に返す役割を担っています

戻り値には、数値や文字列のほか、リストやディクショナリなどのコンテナを指定できます

ただし、引数は複数の利用が許されていますが、戻り値として返せる値は1つだけという点に注意してください

引数を足し算して戻り値として返す関数のサンプルを作ってみましょう。

#引数を足し算して戻り値として返すplus関数
def plus(x,y):
    answer = x + y
    return answer

answer = plus(100, 50)
print(f'足し算の答えは{answer}です')

引数と戻り値でかなり使い勝手がよくなりましたね!


関数呼び出しの正体

関数呼び出しの際に関数名の右側に記述するカッコは、実は関数呼び出し演算子という演算子であり、次のような働きをします。

関数呼び出し演算子の働き

・評価されると、左カッコの直前に記述された関数を呼び出す。そのとき、左カッコと右カッコの間に記述された引数を呼び出し先に引き渡し、実行完了を待つ。

・呼び出し関数の実行が完了すると、返ってきた戻り値に「化ける」。

引数と戻り値を利用する関数の呼び出し

戻り値を受け取る変数名 = 関数名(引数1, 引数2, …)

なお、plus 関数内で使っている変数と、それを受け取る変数の名前がともにanswerとなっています。

「ローカル変数の独立性」によって、これらが同じ変数ではなく、それぞれ独立した別の変数であることに注意が必要です。

今回の例では同じ変数名ですが、必ずしも戻り値の変数と受け取る変数の名前を揃える必要はありません。

ただし、変数名は格納している値の意味が想像できる分かりやすい名称が好ましいとされています。

ローカル変数の独立性をイメージしつつ、引数と戻り値を扱う必要がありますね!


関数の連携

「ある関数を呼び出して得られた結果を、引数として別関数に渡して処理させる」というパターンは非常に多く見られます。

また、関数の中でさらに別の関数を呼び出す機会も頻繁にあります。

コメントを上手く残しながら、可視性の高いコードを目指したいですね!


まとめ

本日は、Pythonで以下を学びました。

引数と戻り値

引数、複数の引数を渡す

戻り値、関数呼び出しの正体

関数の連携

次回は「関数の応用テクニック」を扱っていきます。


かなり色々なことができるようになってきましたが、まだまだ実践が足りないです!
頑張ります!!

目次