Pythonで関数を作る|def・引数・returnをブラウザで練習
結論
Pythonで同じ処理を何度も使うときは、defで関数を定義します。変わる値を引数で受け取り、計算や文字列の結果をreturnで返すのが基本です。
この記事では、名前ごとのあいさつ文を作る例で、関数を定義する方法、引数を渡す方法、戻り値を受け取る方法を順番に確認します。ローカルPythonと公開中のAI Work Studioで同じコードを実行し、出力が一致することも確認しました。
発生している問題
次のコードは正しく動きますが、名前を変えるたびに同じprint()を繰り返しています。
name = "Aki"
print(f"こんにちは、{name}さん")
name = "Mika"
print(f"こんにちは、{name}さん")
表示する文章を「さん」から「ようこそ」へ変えたくなった場合、2か所を直す必要があります。人数が増えるほど修正漏れも起きやすくなります。
原因
同じ役割の処理を、その場ごとに直接書いていることが原因です。変わるのは名前だけなので、あいさつ文を作る処理を関数へまとめ、名前を外から渡せる形にします。
Python公式チュートリアルでは、defの後に関数名と丸括弧で囲んだ仮引数を書き、関数本体を次の行からインデントして記述します。
修正前コード
修正前は、名前の代入と表示を人数分だけ繰り返します。今回の実行結果は正しいものの、処理を再利用できない状態です。
修正後コード
make_greeting()関数を作り、名前を引数nameで受け取ります。作った文字列はreturnで呼び出し元へ返します。
def make_greeting(name):
return f"こんにちは、{name}さん"
print(make_greeting("Aki"))
print(make_greeting("Mika"))
def make_greeting(name):が関数の定義です。関数内のnameは、呼び出すときに渡した"Aki"や"Mika"を受け取ります。make_greeting("Aki")のように関数名の後ろへ丸括弧を書くと、関数が実行されます。
returnは、作成した文字列を呼び出し元へ返し、その関数の実行を終了します。返ってきた文字列をprint()へ渡して表示しています。表示方法と文字列を作る処理を分けられるため、後からファイル保存や画面表示へ使い回すこともできます。
実行結果
関数化する前と後で、次の2行が完全に一致しました。
こんにちは、Akiさん
こんにちは、Mikaさん
ローカルPython 3.12.10とAI Work Studio Python 3.12で終了まで実行でき、標準入力は不要でした。PythonコードのためPreviewは変化せず、結果はConsoleで確認しました。
よくある間違い
returnを書かずに式だけ置く
次のコードは文字列を作っていますが、returnしていません。
def make_greeting(name):
f"こんにちは、{name}さん"
print(make_greeting("Aki"))
実行結果は次のとおりです。
None
Pythonの関数は、returnがない場合もNoneを返します。文字列や計算結果を後で使うなら、返したい値の前にreturnを書きます。
定義しただけで呼び出していない
defのブロックを書いただけでは、関数本体は実行されません。make_greeting("Aki")のように関数を呼び出します。
関数本体のインデントがない
returnなどの関数本体は、defの次の行でインデントします。行頭がそろっていないとIndentationErrorの原因になります。
printとreturnを同じものだと思う
print()は画面へ表示し、returnは値を呼び出し元へ返します。表示だけが目的なら関数内でprint()しても動きますが、結果を別の処理で使うならreturnが向いています。
AI Work Studioで試す手順
- AI Work Studioを開きます。
- Pythonタブを選び、修正前コードを貼って「Pythonを実行」を押します。
- Consoleに2行のあいさつが出ることを確認します。
- 修正後コードへ置き換えて再実行し、同じ2行になることを確認します。
returnを削除した例も実行し、Noneになることを確認します。- 標準入力は空欄のままにします。確認後は自分のコードへ戻してください。
まとめ
Pythonの関数は、defで定義し、変わる値を引数で受け取り、必要な結果をreturnで返します。同じ処理を1か所へまとめると、修正箇所が減り、別の値でも再利用しやすくなります。
まずはmake_greeting()へ別の名前を渡す、あいさつ文を変更する、引数を2個に増やす、といった練習をAI Work Studioで試してみてください。