40代塾講師の「ほぼ独学プログラミング日誌。」10

記事
学び
こんにちは!
塾講師のdainarです。
緊急事態宣言が延長されモンモンとした日々が続いていますね・・・
そんな中ではありますが未来に向かってコツコツとプログラミング の学習を進めて参りましょう!今回はちょっとばかり難しい内容となっています💧

目次 
1. 関数とは
2. 自作関数
3. 関数の利用
4. スコープを理解する

関数とは


さて、今回は『関数』について学びます。
学校で習う1次関数や2次関数とは違い、ここでいう関数「何か値を受け取って、その値を加工し内部で処理をして、結果を返すもの」です。
では、具体的に見ていきましょう。

2つの値「a」と「b」を渡すと「aからbまでたし算した結果を返す」という関数を考えてみます。例えば「1」と「5」を渡した場合には「1+2+3+4+5」の計算をし「15」という結果が得られる関数です。

自作関数


じつは関数は自分で作ることができます!
関数を自分で作り、記述することを【関数を定義する】といいます。Pythonではdefという構文をつかって定義します。
※def は「define」定義するの略語

関数名は適当につけることができます。ここでは「tashizan」という名前にしてみましょう。

def tashizan(a, b):
この関数の中で実行したい処理

この( )の中の「a」「b」は関数で処理したい値のことで「引数(ひきすう)」といいます。※引数はいくつでも設定することができます。

kansu1.png

def 関数名(渡したい値を関数で区切ったもの):
  実行したい文がつづく

上記プログラムの実行したい文に「for構文」や「range関数」が見えますね?この辺の処理が分からない方はこちらhttps://coconala.com/blogs/2217487/55937 で確認してください。  
ここでは変数totalに計算結果を求めています。
関数の結果となる値を設定するには【return total】のように「return」という構文を使いましょう。
returnをつかって値を返すことを「値を返す」とか「値を戻す」といい、この値のことを「戻り値」(返り値)といいます。

関数の利用


定義をした関数は次のように使うことができます。

c = tashizan(1, 10)

このような記述をし、関数を実行すること「関数を呼び出す(コールする)」といいます。そして変数cには「1から10までの計算結果」が格納されています。

kansu2.png


まず、tashizan(1, 10)と書くことでtashizanの「a」「b」にそれぞれ「1」「10」の値が設定されます。その後 range関数の「a」「b」にも「1」「10」の値が渡り、次に「1〜10」までの値が順番に「i」に代入され、totalとのたし算が実行されていきます。その実行結果が変数cに入り、print関数で結果を画面に表示しています→ 55

スコープを理解する


さて、最後にスコープを理解しましょう!
関数をつかうときには1つ大きな注意点があります。
それは関数内の変数と関数外の変数では扱いが違うということです。
少しわかりにくいので具体的な例で見ていきましょう。

kansu3.png

まず変数「a」には「abc」が入っています。
次に「test( )」のコールによりtest関数が実行され変数「a」 に「def 」が代入されprint関数により「a」つまり「def」が表示されます。※ここでtest関数の処理は終了
その後、最後のprint(a)が実行され「abc」が表示されるというわけです。
なぜこのような結果になるかというと、「関数の外部」と「関数の内部」では変数がつくられる場所が違うからです。

こうした変数の有効範囲のことを「スコープ(scope)」といい、関数外部のスコープを「グローバルスコープ」、関数内部のスコープのことを「ローカルスコープ」といいます。
さらにグローバルスコープに置いた変数のことは「グローバル変数」、ローカルスコープに置いた変数のことは「ローカル変数」といいます。
少し内容が難しいですが、要するに関数同士が互いに影響を与えないための大事な考え方ということができそうです。

一度で理解するにはハードルが高そうなので学習を進めながら、プログラミングの途中で、など適宜確認を行っていきたいと思います。
では、また次回!

※参考図書=『いちばんやさしいPython入門教室』大澤文孝(著) ソーテック社
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す