第9回 python入門 今回は関数について説明致します。
ここから先は初心者の方にとってはすごく難しい内容となっています。特に引き数、戻り値のあたりは難しいです。是非実際にプログラミングを体験してください。
今回もpythonを使ってanacondaのspyderで解説致します。
まず関数の概念ですが、関数といってもすこしわかりにくいと思います。これまでpython入門で、if文やwhile文では条件式を満たしているときにインデントされてプログラム処理が実行されていましたね。関数は条件などはありませんが、そのif文やwhile文を大きくまとめたものです。つまり一連の処理を1つにまとめたものです。1つにまとめることによって、プログラムが見やすく且つわかりやすくなります。
イメージとしては関数は処理をまとめたもので、まとめたものを書けば何度もそのプログラムを使うことができるのうな物だと思ってください。関数でまとめることで複雑な大きなプログラムも組めるようになります。それでは実際に関数というものを見てみましょう。
関数の基本式はこのように記載します。
def 関数名(引数名)
処理
return 戻り値
※関数名や引数名は変数名と同じく自由に名前をつけて大丈夫です。ただし変数と同じく同じ名前を重複しないように気をつけてください。
試しに確認してみましょう。少しわかりやすくするために、引数なし戻り値なしで関数を記載してみます。
def hello_watson():
print("welcome watson python")
これで実行してみます。
すると何も出力されませんでした。
冒頭でも説明しましたが関数はただプログラム処理まとめたものです。ですので実際に処理させるためには関数を呼び出すという処理が必要になります。呼び出す時の基本式はこのように記載します。
関数名(引数)
実際に関数を呼び出してみましょう。
def hello_watson():
print("welcome watson python")
//↓↓↓追加
hello_watson()
//↑↑↑追加
関数を呼び出すプログラムはこのように関数の外で記載する必要があります。はい、順番に説明にしていきますとプログラムは上から順番に処理されますので実行ボタンを押下しますと最初にプログラムはdef hello_watson()を実行しようとします。
しかしdef hello_watson():は関数の実態ですのでdef hello_watson():を飛ばした後から処理を行います。ですのでこの関数を呼び出す処理が実行されます。関数を呼び出しておりますので、この呼び出すログラムを実行しますと関数の実態のプログラムまで飛びます。そして関数の実態のプログラムの処理が実行されます。ですので実行ボタンを押下しますと。welcome watson pythonが表示されるはずです。
表示されていることが確認できました。プログラミングが初めての方のためにも、もう少し確認をしてみましょう。それではこのように記載してみます。
w="a"
def hello_watson():
print(w)
w="ab"
hello_watson()
w="abc"
hello_watson()
print("END")
順番に説明していきます。プログラムは上から順番に実行されますので、まずwという変数にはaという文字が代入されます。次の処理ですが、ここで少し着目して欲しいのが次にプログラムが実行されるのはdef hello_watson関数の実態のあとの処理になりますのでdef hello_watson関数内部のprintは実行されません。つまりaという文字は表示されません。次に処理されるのがw=”ab”ですので、wの変数にはabが上書きされます。そして、hello_watsonを呼び出してますのでプログラムはこのprint(w)を実行します。いまwにはabが代入されてますのでabが表示されます。関数内部の処理が終わりましたら、プログラムは関数の呼び出し元に戻ります。そして次のw=”abc”が実行されます。その後にまた関数をhello_watsonを呼び出してますので、プログラムはこのprint(w)を実行します。いまwにはabcが代入されてますのでabcが表示されます。関数内部の処理が終わりましたら、プログラムは関数の呼び出し元に戻ります。最後にprint(“END”)が実行されますのでENDが表示されます。つまり実行結果としてはab,abc,ENDのみが表示されるはずです。実際に実行してみましょう。
このようにab,abc,ENDが表示されていることが確認できます。補足説明ですが、冒頭で説明させて頂いた通り関数は変数と同じく同じ名前を使用することはできません。実際にプログラムを見てみましょう。
試しにこのように記載してみます。
def hello_watson():
print("hello")
def hello_watson():
print("see you")
hello_watson()
これで実行して見ますと
「see you」が出力されていることが確認できます。ここで着目してほしい点が「hello」が実行されていないことです。コンンピューターさんは上のhello_watsonと下のhello_watsonのどちらの関数を処理したら良いか判断できていません。ですので同じ名前の関数は避けましょう。厳密にはクラスというものを利用することで別のクラスに同じ名前を使うこともできます。クラスにつきましては後のpython入門10で解説致します。
次に関数の特徴である、引数と戻り値について説明致します。
簡単にいますと引数とは関数のインプット情報です。戻り値とはアウトプット情報です。さぁここは論より証拠です。実際にプログラムを確認してみましょう。
試しにこのように記載してみます。
def hello_watson(a,b,c):
print(a)
print(b)
print(c)
hello_watson(1,2,3)
これで実行してみますと、
このように1,2,3の結果が出力されました。はいでは、説明していきます。この関数呼び出しの処理のhello_watson(1,2,3)が実行されましたら、プログラムはdef hellow_watson(a,b,c)を実行しにいきます。この時呼び出し元の1,2,3がa,b,cにそれぞれ代入されるというイメージです。ですので、実行結果とし1,2,3が出力されました。またpythonを使用するということは恐らく多くのデータを使用します。それにともない引数の数も多くなることがあります。順番に引数を確認するのは面倒ですので直接指定できるようになっています。
では実際に確認してみましょう。♪( ´θ`)ノ
def hello_watson(a,b,c):
print(a)
print(b)
print(c)
hello_watson(c="watson",b=2,a="hello")
このように引数の順番があべこべであっても、引数を指定することで指定された値を代入することができます。これで実行してみます。
このように適した値が代入されていることが確認できます。
次に戻り値について説明します。戻り値は先ほども言いましたがアウトプットというイメージです。関数内部の処理が完了しましたらその結果を関数の呼び出し元に返すということです。
結果を返す戻り値の基本式はこのように記載します。
return 値
では実際にプログラムを確認してみましょう。
def hellow_watson(a,b,c)
return (a+b+c)
result=hello_watson(1,2,3)
print(result)
これで実行してみますと。
関数内部で行っていたa+b+cがresultという変数に入っていることが確認できます。詳しく説明していきます。まずイコールは右辺を左辺に代入しますので、右辺のhello_watson(1,2,3)が実行されます。ですので、プログラムは引数1,2,3をhello_watson関数に渡します。そして関数内部の処理が実行されます。そしてこのreturn (a+b+c)を実行します。このreturnというのは結果を呼び出し元にお返しますよというイメージです。つまりここでは(a+b+c)という値をお返しますという意味になります。そして呼び出し元に戻りまして結果が変数resultに代入されます。つまりresultにはa+b+cつまり(6)が代入されいます。そしてprint(result)で実行結果を表示しています。実行結果を見て見ますとこのように6と出力されいます。はい、今回は関数についてということで、関数の意味から、実際に関数を用いて実行の流れまで説明しました。また、補足説明として引数や戻り値についても説明しました。引数や戻り値を入れるだけでプログラム複雑化してきますので少しでもわからないということがありましたら是非もう一度ご覧ください。それでもわからない場合はこの動画のコメントに記載してください。次回の講座は深い内容となってきますので是非てご覧下さい。
以上で、python入門9を終了と致します。ご静聴ありがとうございました。(๑╹ω╹๑ )
コメント