今回やること
関数は、処理に名前を付けて再利用するための仕組みです。
同じ処理を何度も書きそうになったら、関数にできないか考えるとコードが読みやすくなります。
今回は、def、引数、戻り値、型ヒントを練習します。
関数を定義する
Pythonでは def で関数を作ります。
def greet():
print("こんにちは")
greet()
def greet(): の下に、関数の中で実行する処理をインデントして書きます。
引数を使う
関数に値を渡すには、引数を使います。
def greet(name):
print(f"{name}さん、こんにちは")
greet("Ada")
greet("Taro")
引数を使うと、同じ処理を値だけ変えて使い回せます。
戻り値を使う
return を使うと、関数の結果を呼び出し元へ返せます。
def add(a, b):
return a + b
result = add(3, 5)
print(result)
print は画面に表示する処理、return は結果を返す処理です。
型ヒントを書く
Pythonでは型ヒントを書けます。
def add(a: int, b: int) -> int:
return a + b
def create_message(name: str, age: int) -> str:
return f"{name}さんは{age}歳です"
型ヒントは実行時に自動で型を強制するものではありませんが、エディタの補完や読みやすさに役立ちます。
小さな関数に分ける
学習時間を分から時間表記に変換します。
def minutes_to_hours(minutes: int) -> float:
return minutes / 60
def create_study_message(subject: str, minutes: int) -> str:
hours = minutes_to_hours(minutes)
return f"{subject}を{hours}時間学習しました"
message = create_study_message("Python", 90)
print(message)
関数を分けると、どの処理が何を担当しているか分かりやすくなります。
よくあるエラー
| エラー | 原因 | 修正 |
|---|---|---|
NameError | 関数名を間違えた、定義前に呼んだ | 関数名と位置を確認 |
TypeError | 引数の数が違う | 定義と呼び出しを比べる |
IndentationError | 関数内のインデントがない | def の中を字下げ |
None が表示される | return を書いていない | 結果を返すなら return |
練習
次の関数を作ってください。
- 名前を受け取り、挨拶文を返す
create_greeting - 点数を受け取り、合格かどうかを返す
is_passed - 分数を受け取り、時間に変換する
minutes_to_hours - 学習テーマと分数を受け取り、学習記録文を返す
create_study_log - それぞれに型ヒントを書く
次のステップ
PythonでWeb APIに進みたい場合は FastAPI入門 が次の候補です。文法を素早く確認したい場合は Pythonチートシート を使ってください。