AI AIワークナビ AI Work Studio
メニュー
AIワークナビ ホーム

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で試す手順

  1. AI Work Studioを開きます。
  2. Pythonタブを選び、修正前コードを貼って「Pythonを実行」を押します。
  3. Consoleに2行のあいさつが出ることを確認します。
  4. 修正後コードへ置き換えて再実行し、同じ2行になることを確認します。
  5. returnを削除した例も実行し、Noneになることを確認します。
  6. 標準入力は空欄のままにします。確認後は自分のコードへ戻してください。

まとめ

Pythonの関数は、defで定義し、変わる値を引数で受け取り、必要な結果をreturnで返します。同じ処理を1か所へまとめると、修正箇所が減り、別の値でも再利用しやすくなります。

まずはmake_greeting()へ別の名前を渡す、あいさつ文を変更する、引数を2個に増やす、といった練習をAI Work Studioで試してみてください。

関連記事

公式情報