関数とは命令や処理をまとめたもので、入力値を受け取って、出力値を返します。
例えば文字列などを出力する「print」も関数です。受け取る値を“引数(ひきすう)”といい、関数名の後に続くカッコに入れます。
printは引数(カッコに入れた文字列や数値など)を出力してくれる関数です。
関数によっては、引数はひとつとは限りません。複数の場合もありますし、ひとつも無い場合もあります。
エクセルを使う人はなんとなく分かるのではないでしょうか?
エクセルでも関数名の後にカッコを付けて、その中に値を入れますね。数値を入れたり、条件式を入れたりすると思いますが、同じような書き方です。
関数を書いて動かすことを「関数を呼び出す」といういい方をします。関数名とその後にカッコを書くことが、まさに「関数を呼び出している」ということで、そのカッコの中に引数を書くことを「関数に引数を渡す」といいます。
組み込み関数
関数には自分で定義する方法と、最初からPythonに用意されている関数があり、最初から用意されているものを「組み込み関数」といいます。
組み込み関数は特別なことをしなくても、すぐに使うことができます。printも組み込み関数ですので、いきなり書いて文字列等を出力することができます。
よく使う組み込み関数はいろいろありますが、最初から覚えようとしなくて大丈夫です。学習を進めるうちにたくさん出てきますし、やりたいことを実行してくれる関数をその都度検索したり、本で調べたりしながら徐々に慣れましょう。
とはいえ、最初からよく出てくる組み込み関数がありますので、いくつか紹介しておきます。
str
strはstringの略で、引数に数値を渡すと文字列型に変換して返します。計算した結果を文字列で表す必要がある場合などに使います。
Int
intはintegerの略で、引数に数字の文字列を渡すと整数型に変換して返します。受け取った数字が文字列になっている場合、そのままでは計算できないので、整数に変換する必要があるときなどに使用します。
len
lenはlengthの略で、文字列の長さなどを返します。この後学習するリスト(複数の要素を格納できるもの)の要素の数も返してくれます。
Input
ユーザーが入力したデータを引数として受け取ります。受け取ったデータは文字列(str型)なので、数値として計算などに使う場合はint関数で整数に変換するなどして使用します。
通常は受け取ったデータを変数に格納して使用することが多いです。
関数の定義
組み込み関数は最初から用意されていますが、自分で関数を作ることもできます。関数を作ることを「関数を定義する」といいます。
作り方は def 関数名( ) : として改行し、スペース4つ分のインデントの後、処理(やりたいこと)を記述します。
呼び出すときは、組み込み関数同様 関数名( ) とします。カッコの中には引数を入れることができます。
上の例では、helloが関数名で、nameが引数です。print部分が関数の処理で、hello(‘鈴木’)で関数を呼び出しています。
返り値(戻り値)
関数の中で「return」を使うと実行結果(関数によって得られるデータ)を呼び出し元に返します。
文章で表すとややこしいですが、難しくありません。returnによって関数は処理を終え、プログラムは呼び出し元に移ります。
返り値を変数に格納することで、後から使用することができます。
スコープ
変数にはスコープという概念があります。変数を利用できる範囲のことで、どこで変数を定義したかによって、その範囲が異なります。
関数の中で定義した変数は、その関数の中でしか使えませんが、外で定義した変数はプログラムのどこからでも使うことができます。それぞれ「ローカル変数」、「グローバル変数」と呼びます。
ローカル変数を関数の外から呼び出すと、プログラムは「その変数は定義されていない」としてエラーになります。
簡単なプログラムでは感覚的に理解できると思いますが、複雑になってくると分かりにくくなって、問題を生じることがありますので気を付けましょう。