
この回でできるようになること
- 01def で関数を定義し、呼び出す
- 02引数と戻り値の役割を説明する
- 03初期値とキーワード引数を使う
処理に名前をつける
def で関数を定義します。定義しただけでは中身は動かず、名前を書いて呼び出したときに実行されます。

毎回『こんにちは』を書くのは大変。ROBORONにあいさつ係を頼もう!

いい考え方だね。greet という名前の関数を作って、必要なときに呼ぼう。

コロンと字下げは、if や for と同じですね。
def greet():
print("こんにちは!")
greet()
greet()
なぜ? def の中は2回呼び出されるので、同じ表示が2回出ます。定義行だけなら表示はありません。

greet だけでは呼び出しになりません。greet() と丸かっこを付けよう。
値を渡し、結果を受け取る
関数へ渡す値が引数、return で返す値が戻り値です。print と return は役割が違います。

2個と3個を足して、あとでまた使いたい!

それなら結果を return で返そう。表示するだけだと、後の計算にその値を使えないんだよ。

total に戻り値を入れて、別の計算へ渡せますね。
def add(a, b):
return a + b
total = add(2, 3)
print(total)
print(total * 2)
なぜ? add(2, 3) の中で a=2、b=3。return が5を返し、total に入ります。

return の後の同じ関数内の行は実行されないよ。
引数に初期値を用意する
引数に = を使って初期値を設定すると、省略したときにその値が使われます。名前を指定して渡すのがキーワード引数です。

『こんにちは』以外のあいさつにも変えたいな。

初期値を付ければ、いつもの言葉も別の言葉も選べるよ。

greet(name='ROBORON', word='やあ') なら順番より名前で意味が分かります。
def greet(name, word="こんにちは"):
return f"{word}、{name}さん"
print(greet("あおい"))
print(greet(name="ROBORON", word="やあ"))
なぜ? word を省略すると初期値『こんにちは』。2回目はキーワード引数で『やあ』を指定します。

初期値のない引数は基本的に省略できません。
予想して、理由まで確かめよう
答えを選んだら、説明を読んでから実行欄でも試してみよう。
def add(a,b): return a+b のとき add(4, 5) の戻り値は?
答えを選ぶと理由が表示されます。

小さな練習:割引後の価格を返そう
price と discount を受け取り、price - discount を return する関数を作ろう。200円から30円引くと?
ヒント:def discounted(price, discount): から始めます。
解き方の一例と理由を見る
def discounted(price, discount):
return price - discount
print(discounted(200, 30))戻り値は170。表示は関数の外で行っています。
同じ計算を何度も使う理由

買い物の合計も、センサーの平均も、関数にできそう!

そうだね。ただし関数の名前は『何をするか』が分かるように付けよう。入力と出力を明確にすると、間違いを見つけやすくなるんだよ。

小さな関数を試してから組み合わせると、確認もしやすいですね。
自分の手で動かそう
例題を選び、結果を予想してから「実行する」を押そう。値を変えると、どの行が結果を決めるか見えてくるよ。
書き換えて試せます。Tabキーは半角スペース4つ分です。
定義しただけでは動きません。呼び出しが2回です。
この入力欄の使い方
コード内の input() に渡す値を1行ずつ書きます。input() がない例では空欄で大丈夫です。複数回呼ぶコードでは上から順に使います。
準備できました。
実行結果
実行すると、ここに結果を表示します。
Pythonは閲覧中の端末内で動作します。

いつもの処理に、名前をつける。 今日覚えた道具を、別の値でも試してみよう。自分で理由を説明できたら、とてもいい進歩なんだよ。