順番に読み進めながら学べます

def で関数を定義する — 引数・戻り値・デフォルト/キーワード引数

Python の関数定義 def の基本を学びます。def と return の書き方、呼び出し側からの引数、デフォルト引数、キーワード引数まで一通り図解で押さえます。

同じ処理を何度も使用する場合には、処理に名前を付けて、使いたい場所から何度も呼び出せるようにします。その仕組みが関数で、def キーワードで定義します。

関数を使えば、共通処理を 1 箇所にまとめられ、使う側は呼び出し 1 行で済みます。ここまでで使ってきた print() / len() / int() / sum() なども、すべて関数です。

def と return の基本

関数は def 関数名(引数): で定義し、中身をインデントで書きます。呼び出し側に値を返すには return 値 を使います。return が書かれていない関数は None を返す扱いになります。

関数・引数・戻り値の関係
引数(入力値)関数(処理本体)戻り値(出力値)渡すreturn

引数は関数を呼び出すときに渡す値、戻り値は関数が return で返す値です。同じ関数でも引数を変えれば結果が変わるため、1 つの定義を使い回すことができます。

関数の定義と呼び出し
関数定義関数実行def greet(name): return ...greet("Tanaka")本体実行return 値が戻るname: Tanakareturn ...
# 引数なし、戻り値なし
def print_hello():
    print("Hello World")

print_hello()        # Hello World

# 引数 2 つ、戻り値 1 つ
def max_num(a, b):
    if a >= b:
        return a
    return b

result = max_num(30, 20)
print(result)        # 30

# return で関数が抜けるので、それ以降のコードは実行されない
def check(x):
    if x < 0:
        return "negative"
    return "non-negative"

print(check(-5))     # negative

割引率を計算する関数を作ります。

def apply_discount(price, rate): で関数を定義し、price * (1 - rate)return してください。

apply_discount(1000, 0.2) の結果を変数 sale_price に入れ、print(f"セール価格: {sale_price} 円") で表示してください。

apply_discount(500, 0.1) を直接 print() の中で呼び出し、同じ関数が値だけ変えて再利用できることを確認してください。

(正しく実行できれば解説が表示されます)

Python エディタ

コードを実行してください

デフォルト引数とキーワード引数

引数に = 値 を付けておくと、呼び出し側が省略したときの初期値を設定できます(デフォルト引数)。

また呼び出し時に 引数名=値 の形で渡すと、位置に関係なく値を渡せます(キーワード引数)。デフォルト引数は、順序の影響を受けないように引数リストの後方に置くのが習慣です。

3 通りの呼び出しとパラメータの埋まり方
def greet(name, greeting="こんにちは"):① greet("田中")name="田中"greeting="こんにちは"(デフォルト適用)greet(name="田中"greeting="こんにちは")② greet("山田", "おはよう")name="山田"greeting="おはよう"(位置で上書き)greet(name="山田"greeting="おはよう")③ greet(greeting="こんばんは", name="佐藤")name="佐藤"greeting="こんばんは"(順序入れ替え OK)greet(name="佐藤"greeting="こんばんは")省略位置キーワード実行実行実行
# greeting にデフォルト値を持たせる
def greet(name, greeting="こんにちは"):
    return f"{greeting}{name}さん"

print(greet("田中"))                        # こんにちは、田中さん
print(greet("山田", "おはよう"))             # おはよう、山田さん
print(greet(greeting="こんばんは", name="佐藤"))  # キーワード指定で順序を入れ替え
# 出力: こんばんは、佐藤さん

ユーザー情報をフォーマットする関数を書きます。

def format_user(name, role="member"): を定義し、return f"{name} ({role})" を返してください。

format_user("tanaka")(role 省略)の結果を print() してください。

format_user("suzuki", "admin")(位置引数)と format_user(role="owner", name="sato")(キーワード引数)の結果も print() してください。

Python エディタ

コードを実行してください

この記事では、def による関数定義return での戻り値デフォルト引数・キーワード引数を学びました。関数を使いこなせるようになると、同じ処理を別の場所で何度でも呼べるようになり、コードの可読性が向上します。

QUIZ

理解度チェック

まずは1問ずつ答えてみましょう。

Q1次のコードの出力はどれですか?
def f(x, y=10):
return x + y

print(f(3))

Q2次のうち、キーワード引数で呼び出しているものはどれですか?
def greet(name, greeting="Hi"):
return f"{greeting}, {name}"

Q3次のコードを実行したときの結果として正しいものはどれですか?
def g(x):
x + 1 # return なし

result = g(10)
print(result)