ある処理を「関数」としてひとつにまとめることで、同じ処理を何度も再利用することができます。関数の使い方をマスターすれば、少ない労力で分かりやすいプログラムを書く事ができます。
1 もくじ
2 関数とは
関数の構造を見ていきましょう。
1行目のlv_upの部分を関数名といい、好きに名前をつけることができます。
2~3行目のように、複数の処理を実行するにはそれらの行をインデント(参照)する必要があります。
ここで注意する必要があるのは、上のコードはあくまで関数を定義しただけということです。先ほどのコードを実行してみてください。「レベルが上がった!!」とは出力されません。
定義した関数を実行するには、関数を呼び出す必要があります。次のプログラムをコピー&ペーストして実行してみてください。
実行結果
テレテレッテッテテー
レベルが上がった!!
3 関数と引数
関数には引数(ひきすう)という値を与えることができます。次のプログラムを実行してみてください。
実行結果
勇者のレベルが上がった!!
賢者のレベルが上がった!!
引数を複数指定することもできます。,(カンマ)を用いて記述します。
実行結果
13÷3=4あまり1
このように、引数を用いることで同じような処理をひとまとめにできます。
4 関数と戻り値
引数は関数に値を与えることができますが、逆に関数から値を受け取ることもできます。それが戻り値です。
実行結果
11
少し難しいですが、プログラムを見ながら動作を確認しましょう。
- 実行すると、1~2行目は関数の定義なので何も処理が行われません。
- 3行目のprint文の中身にあるadd(5,6)によって、関数が呼び出されます。
- a=5,b=6として関数の中で処理が行われ、戻り値として
11が出力されます。 - print文の中身が
11になるので、11が表示されます。
5 ローカル変数とグローバル変数
5.1 ローカル変数
ブロック(インデントされているまとまり)の中で宣言した変数は、他のブロックでは使えません。以下のコードを実行するとエラーになります。
関数の中で変数resultを定義しているので、関数の外で変数を参照しようとするとエラーになります。このように、関数の中定義され、関数の中でしか使えない変数のことをローカル変数といいます。
5.2 グローバル変数
この問題を解決するにはresultをグローバル変数にする必要があります。つまり、resultを関数の外で定義すればよいわけです。しかし、ただ関数の外で宣言すればうまくいくかというと、そうではありません。
実行結果
0
この場合でも、関数の中のresultと、関数の外のresultは違うものだとみなされてしまいます。関数の中のresultがグローバル変数であることを明記しなけれまなりません。n個のグローバル変数を利用したいとき、関数の初めに以下の形式で記述します。
global 変数名1,変数名2,...,変数名nこれを用れば、うまく変数の中身を受け渡せるようになります。
実行結果
3