プログラマーとして、あなたはしばしば同じアクションやタスクを何度も実行する必要があることに気づくでしょう。これは、特に大規模または複雑なコードベースを扱う場合、面倒で時間のかかる作業になる可能性があります。それらを関数で自動化することは、そのようなタスクを実行するより効果的なアプローチです。関数は、コードロジックを一度記述して、プログラムのどこからでも使用することができます。
Python関数とは何か?
Pythonでは、関数は特定のタスクを実行するために使用されるコードブロックです。関数は一度だけ記述する必要がありますが、コードの中で何度も使用することができます。関数は、入出力として引数を受け取り、出力値を返すことができます。この簡単なプログラムは、3つの数の合計を計算する関数を示しています:
# 3つの数の合計を計算するPython関数 def calculate_sum(a, b, c): return a+b+c print(calculate_sum(1,2,3)) # 6を返す print(calculate_sum(1000, 300,44)) # 1344を返す print(calculate_sum(12, 4,78)) # 94を返す
上記のプログラムでは、関数は3つの引数の合計を返します。関数が複数回呼び出されると、各ケースで異なる出力が返されます。この関数の有用な応用例は、電卓アプリです。
Pythonで関数を定義する
Pythonには、開発者が使用できる組み込み関数が数多く用意されています。しかし、これらの組み込み関数は、ほとんどのプロジェクトの要求を満たすのに十分ではありません。カスタムの要求を満たすためには、独自のカスタム関数を定義する必要があります。カスタム関数を定義することは、プログラミングでは一般的なことです。
Pythonでは、defキーワードの後に、関数の名前を括弧で囲んで、カスタム関数を定義することができます。以下に例を示します:
def function_name()
Pythonで関数名をつける際には、以下のルールに注意する必要があります:
- 関数名は小文字にすること。
- 関数名は説明的であること。
- 関数名の中の単語はアンダースコアで区切る。
関数を定義した後、目的のタスクを実行するためのロジックを記述する必要があります。例えば、この関数は三角形の面積を計算します:
# 三角形の面積を計算するPython関数 def calculate_triangle_area(base, height): area = (base * height)/2 return area print(calculate_triangle_area(12, 3))
上記の関数は、2つのパラメータbaseとheightを定義し、その積を2で割って結果を出力として返します。関数は、実行したいロジックを自由に記述することができます。
関数引数の理解
これまでの例では、関数はアクションを実行するために引数を受け取っています。これらの例における引数は、必須引数または位置引数と呼ばれます。Pythonでは、引数は以下のいずれかになります:
- 位置引数
- キーワード引数
位置引数
位置引数は、定義された順序で渡す必要があります。例えば、a, b、cというパラメータを持つ関数を定義した場合、呼び出す際にはこれらのパラメータに対応する値を順番に渡す必要があります。前回の例を見てみましょう:
# 3つの数の合計を計算するPython関数 def calculate_sum(a, b, c): return a+b+c print(calculate_sum(1,2,3)) # 6を返す print(calculate_sum(1000, 300,44)) # 1344を返す print(calculate_sum(12, 4,78)) # 94を返す
上記のプログラムでは、calculate_sum()関数は、呼び出すたびに3つの引数を受け取ります。各引数は、対応するパラメータを表しています。最初の関数呼び出しでは、数値1, 2,および3は、それぞれa, b,およびcを表しています。
パラメータは関数の定義で宣言され、引数は関数を呼び出すときに渡される値です。この値は、対応するパラメータを表しています。
位置引数は必須です。追加しないと、TypeErrorが発生します。以下の例で説明します:
def calculate_sum(a, b, c): return a+b+c print(calculate_sum(1,2)) # TypeErrorを発生させる
上記のプログラムを自分のマシンで実行すると、以下の画像のようなエラーが発生します:
キーワード引数
キーワード引数は、関数を呼び出すときに必ずしも渡す必要はありません。キーワード引数はオプションの引数であり、特定の順序に従う必要はありません。Pythonでは、*argsとkwargsを使ってキーワード引数を指定することができます。
*argsとkwargsを使用する以外にも、引数にデフォルト値を指定することも可能です。これを行うと、関数を呼び出すときに値を追加するのを忘れた場合にエラーが発生しません。この例は、その例を示しています:
def calculate_sum(a, b, c=3): return a+b+c print(calculate_sum(1,2)) # 6を返す
上記のプログラムでは、calculate_sum()が呼び出されたとき、cの引数は指定されていません。これは、cにすでにデフォルト値が設定されているため、プログラムに影響はありません。引数のデフォルト値は、必要な数だけ指定できますが、賢く指定するようにしてください。
関数を用いてコードを整理する
関数はコードを整理するのに役立ち、より読みやすく効率的にすることができます。関数を使用することで、コードをより小さく、再利用可能なチャンクに分割することができ、理解しやすく、保守しやすくなります。さらに、コードに変更を加える必要がある場合、コードベース全体ではなく、必要な関数だけを変更するだけで済みます。
コメントする