Pythonチュートリアル 4章 制御構造ツール(4)

関数を定義する

・関数の定義にはキーワードdefを使います。defの後には、関数名と仮引数を丸括弧で囲んだリストを続けなければなりません。

・関数の実体を構成する実行文は次の行から始め、インデントされていなければなりません。

・関数の本体の記述する文の最初の行は文字列リテラルにすることもできます。これをドキュメンテーション文字列といいます。
ドキュメンテーション文字列については、以降の章「ドキュメンテーション文字列」で説明します。

・関数を実行するとき、関数のローカル変数のために使われる新たなシンボルテーブル (symbol table) が用意されます。
シンボルテーブルについては、以降の章「スコープと名前空間」で説明します。

・関数を呼び出す際の実際の引数 (実引数) は、関数が呼び出されるときに関数のローカルなシンボルテーブル内に取り込まれます。
引数は値渡し(call by value)で渡されます。(ここでの値(value)とは常にオブジェクトへの参照(reference)の事で、オブジェクトの値そのものではありません。)

1行目が、fib関数を定義しています。
2行目が、ドキュメンテーション文字列です。
3行目で、変数aと変数bにそれぞれ0と1を代入しています。
4行目で、While文でaが引数で与えられた2000より小さくなるまでループを行います。
ループの中では、print文で変数aの値を出力して、end引数で、出力した値に後に空白を出力しています。
また、変数aと変数bにそれぞれbとa+bの値を代入しています。
7行目のprint() は引数が無いので何も出力しません。(不明)
9行目で、上記で定義したfib関数を引数に2000を指定して実行しています。

return文

return文では、関数から一つ値を返します。 returnの引数となる式がない場合、「None」が返ります。
関数が終了したときにも「None」が返ります。

12行目で、fib2(100)よりreturn文で返される戻値をf100へ代入しています。
13行目で、f100の値を表示して内容を確認しています。

まとめ

今回は、関数について説明しました。
関数の定義方法についてマスターしましょう。
以降の章で、更に詳しく説明して行きます。