処理をまとめて名前を付けることで、再利用できるようにするのが関数です。関数には今まで何度も使ってきたprint()のような最初から使える組み込み関数もありますが、今回は自分で関数を定義して使う方法を試してみましょう。
関数を定義する
Pythonで関数を定義するには、def文を使います。Pythonでdef文を使用するにはdef、関数名、括弧「()」、コロン「:」を使います。その一つ下の行にインデントをして処理のコードを書きます。なので例としてdef文は、
def 関数名():
コード
の形式で書くことで定義できます。この例ではインデントは半角スペース四つで行っています。統一しているならインデントは半角スペース二つなどでも構いません。また、関数を利用するときに渡すデータのことを「引数(ひきすう)」といい関数定義のときに括弧の中に記述して定義します。引数は複数渡すことができ、その場合はカンマで区切ります。なので引数を利用して定義する例は、
def 関数名(引数1, 引数2, ...):
コード
の形式になります。
では、実際にやってみましょう。
GoogleColaboratoryを開いて新しいノートブックを開き
def say_hello():
print("皆さん、こんにちは")
say_hello()
と入力し実行してみましょう。すると結果は
皆さん、こんにちは
と表示されます。これはdef文でsay_hello()という関数を定義し、この関数を呼び出したときの処理は「皆さん、こんにちは」という文字列を出力すると定義しています。定義後、「say_hello()」と書いて関数を呼び出すことで定義した処理を実行してくれるため今回は「皆さん、こんにちは」という文字列を出力してくれました。
次は引数を定義した関数を定義してみましょう。
def greet(name):
print(f"{name}さん、こんにちは")
greet("a")
greet("佐藤")
greet("パイソン")
とセルに入力して実行してみましょう。すると結果は
aさん、こんにちは
佐藤さん、こんにちは
パイソンさん、こんにちは
と表示されます。これは先ほどのように文字列を出力する関数を定義しましたが、「name」という引数を定義しました。これにより関数を呼びだすときにデータを渡すことができ、今回は渡されたデータがnameに代入されその文字列が出力されるという処理の関数が定義されています。そして定義後に関数「greet()」を括弧内に引数に渡したいデータを書いた状態で呼び出すことで処理が実行されます。今回は引数に渡すデータを変えて関数greet()を3回呼び出したので3回文字列が表示されました。なお、この関数は引数に何もデータを渡さないとエラーになります。
関数で引数を定義するときに何もデータが渡されていなかった場合に引数に既定値を渡すように定義することができます。これをデフォルト引数と呼びます。デフォルト引数を定義するには引数を定義するときに引数の横にイコール「=」と既定値にしたいデータ入力します。なので例は
def 関数名(引数=既定値にしたいデータ):
コード
の形式になります。デフォルト引数を定義するときの注意として、複数の引数を定義したときにデフォルト引数として定義した引数の後にデフォルト引数が定義されてない引数がある場合エラーになります。例として、
def 関数名(引数1=既定値にしたいデータ, 引数2):
コード
このように入力して関数を定義しようとするとエラーになります。なのでデフォルト引数を定義するときは順番に注意しましょう。
それでは実際にやってみましょう。
def greet_default(name="名無し"):
print(f"{name}さん、こんにちは")
greet_default()
greet_default("パイソン")
とセルに入力して実行してみましょう。すると結果は
名無しさん、こんにちは
パイソンさん、こんにちは
と表示されます。これも文字列を出力する関数ですがデフォルト引数が定義されているので、関数「greet_default()」を呼び出すときに引数にデータを渡さず呼び出すと既定値の”名無し”が入力された扱いになり、「名無しさん、こんにちは 」の文字列が出力されます。そして引数にデータを渡した場合はそのデータで処理されるので5行目で関数を呼び出したときは「パイソンさん、こんにちは」と文字列が表示されるように処理されました。
次は関数の処理の結果を返す「return文」というものを使って関数を定義してみましょう。return文を使うと関数はそこで実行を終了して処理の結果を呼び出し元に返します。この返す処理結果のことを返り値と呼びます。なお、return文が指定されていない関数、returnの後に何も書かれていない場合は、「None」が返されます。return文を使った関数定義の例は
def 関数名(引数1, 引数2, ...):
コード
return 返り値
の形式になります。
それでは実際にやってみましょう。
def add_numbers(x, y):
result = x + y
return result
ans = add_numbers(10, 20)
print(ans)
print(add_numbers(100, 50))
とセルに入力して実行してみましょう。すると結果は
30
150
と表示されます。この関数は引数を二つ受け取り、その二つを足した数を変数resultに代入します。そしてresultの値を返り値として呼び出し元に返します。今回は五行目と七行目で呼び出しています。五行目は関数の返り値を変数ansに代入して六行目で変数ansの値を出力。七行目は五行目の時とは別のデータを引数として渡し、返り値を出力しています。

今回はこれで終了です。今回のサンプルを用意したので、もし必要な場合は上の「Open in Colab」と書いてあるボタンをクリックしてください。なおそのままだと編集不可なので編集をしたい場合は「ドライブにコピー」をクリックしてコピーしてください。
なおGoogleColaboratoryについてわからなかったらGoogleColaboratoryを使ってみよう_導入編をご覧ください。