PYTHON はじめの一歩 / LESSON 09

関数を作ってみよう。

同じ計算を何度も使うなら関数にまとめよう。入力する値と返ってくる値をはっきりさせると、読みやすくなります。

学びを始める

いつもの処理に、名前をつける。 | 動画なしでも学べます

関数を作ってみよう。をあおい・はる・AI先生・ROBORONと考えるイラスト
いつもの処理に、名前をつける。
GOAL

この回でできるようになること

  • 01def で関数を定義し、呼び出す
  • 02引数と戻り値の役割を説明する
  • 03初期値とキーワード引数を使う
ことばの窓
01 / EXPLORE

処理に名前をつける

def で関数を定義します。定義しただけでは中身は動かず、名前を書いて呼び出したときに実行されます。

あおい

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

AI先生

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

はる

コロンと字下げは、if や for と同じですね。

実際のコードまず結果を予想してみよう
def greet():
    print("こんにちは!")

greet()
greet()
実行するとこんにちは! / こんにちは!

なぜ? def の中は2回呼び出されるので、同じ表示が2回出ます。定義行だけなら表示はありません。

目で見てわかる処理に名前をつける
図9-1 関数は、使うときに動きます。
図9-1 関数は、使うときに動きます。
ROBORONのチェック!

greet だけでは呼び出しになりません。greet() と丸かっこを付けよう。

02 / EXPLORE

値を渡し、結果を受け取る

関数へ渡す値が引数、return で返す値が戻り値です。print と return は役割が違います。

あおい

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

AI先生

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

はる

total に戻り値を入れて、別の計算へ渡せますね。

実際のコードまず結果を予想してみよう
def add(a, b):
    return a + b

total = add(2, 3)
print(total)
print(total * 2)
実行すると5 / 10

なぜ? add(2, 3) の中で a=2、b=3。return が5を返し、total に入ります。

目で見てわかる値を渡し、結果を受け取る
図9-2 関数は入力を受け、結果を返します。
図9-2 関数は入力を受け、結果を返します。
ROBORONのチェック!

return の後の同じ関数内の行は実行されないよ。

03 / EXPLORE

引数に初期値を用意する

引数に = を使って初期値を設定すると、省略したときにその値が使われます。名前を指定して渡すのがキーワード引数です。

あおい

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

AI先生

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

はる

greet(name='ROBORON', word='やあ') なら順番より名前で意味が分かります。

実際のコードまず結果を予想してみよう
def greet(name, word="こんにちは"):
    return f"{word}、{name}さん"

print(greet("あおい"))
print(greet(name="ROBORON", word="やあ"))
実行するとこんにちは、あおいさん / やあ、ROBORONさん

なぜ? word を省略すると初期値『こんにちは』。2回目はキーワード引数で『やあ』を指定します。

目で見てわかる引数に初期値を用意する
図9-3 初期値がある引数は必要なときだけ変えられます。
図9-3 初期値がある引数は必要なときだけ変えられます。
ROBORONのチェック!

初期値のない引数は基本的に省略できません。

04 / YOUR TURN

予想して、理由まで確かめよう

答えを選んだら、説明を読んでから実行欄でも試してみよう。

チャレンジどれになるかな?

def add(a,b): return a+b のとき add(4, 5) の戻り値は?

答えを選ぶと理由が表示されます。

PUT IT TOGETHER

小さな練習:割引後の価格を返そう

price と discount を受け取り、price - discount を return する関数を作ろう。200円から30円引くと?

ヒント:def discounted(price, discount): から始めます。

解き方の一例と理由を見る
def discounted(price, discount):
    return price - discount
print(discounted(200, 30))

戻り値は170。表示は関数の外で行っています。

COFFEE BREAK

同じ計算を何度も使う理由

あおい

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

AI先生

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

はる

小さな関数を試してから組み合わせると、確認もしやすいですね。

05 / RUN PYTHON

自分の手で動かそう

例題を選び、結果を予想してから「実行する」を押そう。値を変えると、どの行が結果を決めるか見えてくるよ。

例題を選ぶ

書き換えて試せます。Tabキーは半角スペース4つ分です。

定義しただけでは動きません。呼び出しが2回です。

この入力欄の使い方

コード内の input() に渡す値を1行ずつ書きます。input() がない例では空欄で大丈夫です。複数回呼ぶコードでは上から順に使います。

準備できました。

実行結果

実行すると、ここに結果を表示します。

Pythonは閲覧中の端末内で動作します。

AI先生からひとこと

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