クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

Pythonの関数の書き方

このレッスンのあとで: 値を受け取って結果を返す関数を、def を使って書くことができる。

60分のレッスンコマンド4件毎日使う Linux コマンドのラボ:エンジニアが暗記している30のコマンド

一度書いて、何度も使う

Python の関数とは、名前をつけた手順のまとまりです。一度書けば、何度でも呼び出して使えます。

学園祭の模擬店で、売上に10%の手数料がかかるとします。計算を毎回書くのは大変です。手数料を求める関数を1つ作れば、どの売上でも同じ名前で呼び出せます。

このレッスンのゴール

メモ

値を受け取って結果を返す関数を、def を使って書くことができる。

キーワード

ことばいみれい
関数名前をつけた、手順のまとまり
引数関数に渡す値with_fee(1000)
戻り値関数が返す結果
return戻り値を返して、関数を終える命令
呼び出し関数の名前を書いて、実行させること
スコープ変数が使える範囲

学生が入力するセルは、このプレビューでは空白です。

def で関数を作る

def 名前(引数): の下に、下げた行で手順を書きます。結果は return で返します。

def with_fee(price): は、「price という値を受け取る with_fee という関数」を作ります。作っただけでは動きません。with_fee(1000) と書いて呼び出すと、動きます。

手数料を求める関数

コード: python
# 手数料は価格の10%です。
def with_fee(price):
    fee = price // 10
    return price + fee

print(with_fee(1000))
print(with_fee(250))
# 1000 を 3000 に変えて実行しましょう。

関数のプログラムを書き出す

コマンド
printf 'def double(n):\n    return n * 2\n\nprint(double(21))\n' > fn.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

実行して、戻り値を確かめる

コマンド
python3 fn.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

return は結果を返し、print は表示する

print は、値を画面に見せるだけです。関数を呼び出した場所には、何も戻りません。

return は、値を呼び出した場所に返します。返した値は、変数に入れたり、別の計算に使ったりできます。

例: print と return の違い

printreturn
画面に出るか出る出ない。呼び出し側が表示する
変数に入れられるかできないできる
関数が終わるか終わらないそこで終わる
使う場面人に見せる次の計算に渡す

学生が入力するセルは、このプレビューでは空白です。

よくある間違い

注意

「画面に出たのだから、結果は返っている」と考える人がいます。画面に出るのは print の働きで、返すのは return の働きです。関数の結果を使いたいときは、必ず return を書きます。

関数の中の変数は、外には出ない

関数の中で作った変数は、その関数の中だけで使えます。これがスコープです。

外に同じ名前の変数があっても、中の変数は別の箱です。外の値は、関数の中の代入では変わりません。

同じ名前の別の箱

コード: python
total = 100

def add_fee(price):
    # この total は関数の中だけの、別の箱です。
    total = price + 10
    return total

print(add_fee(50))
print(total)
# 2つの表示が、なぜ違うのかを考えましょう。

assert で関数に小さなテストをする

assert 式 は、式が True なら何も起こさず、False ならエラーで止まります。関数の答えが期待どおりかを、1行で確かめられます。

課題の採点も、この考え方です。隠れたテストが、あなたの関数を呼び出して、答えを assert で確かめます。

関数とテストを書き出す

コマンド
printf 'def double(n):\n    return n * 2\n\nassert double(4) == 8\nprint("ok")\n' > fn_test.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

テストを通す

コマンド
python3 fn_test.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

このラボとソースについて: 毎日使う Linux コマンドのラボ:エンジニアが暗記している30のコマンド

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。