def | 関数定義 | Python予約語 徹底解説 使い方と注意点

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

Pythonの予約語「def」の解説

defとは何か

defは、Pythonで関数を定義するために使われる予約語です。関数は、特定の処理をまとめて名前を付け、必要に応じて何度でも呼び出すことができるコードのブロックです。defキーワードを使用することで、簡潔で再利用可能なコードを作成できます。

関数の基本的な定義

関数を定義するには、defキーワードに続けて関数名を記述し、関数内の処理をインデントして書きます。以下は、Pythonで関数を定義する基本的な例です。

def greet():
    print("こんにちは!")

# 関数の呼び出し
greet()

この例では、greetという関数を定義しています。この関数は、呼び出されると「こんにちは!」というメッセージを出力します。greet()と呼び出すことで、定義された処理が実行されます。

引数を持つ関数

関数は引数を取ることができ、これにより関数を汎用的に利用できます。引数は関数の名前の後に括弧内に指定し、関数内でその値を使って処理を行います。

def greet(name):
    print(f"こんにちは、{name}さん!")

# 関数の呼び出し
greet("太郎")

このコードでは、greet関数にnameという引数を持たせています。呼び出し時に「太郎」という名前を渡すことで、「こんにちは、太郎さん!」と表示されます。

戻り値を持つ関数

関数は、処理結果を戻り値として返すことができます。戻り値を返すにはreturn文を使用します。

def add(a, b):
    return a + b

# 関数の呼び出しと結果の出力
result = add(3, 5)
print(result)  # 出力: 8

この例では、add関数が2つの引数abを受け取り、その和を返します。戻り値はresultに格納され、printで出力されます。

デフォルト引数

Pythonの関数は、引数にデフォルト値を指定することができます。デフォルト値が設定された引数は、関数呼び出し時に引数が渡されなかった場合にそのデフォルト値が使われます。

def greet(name="ゲスト"):
    print(f"こんにちは、{name}さん!")

# 引数を渡さずに呼び出し
greet()  # こんにちは、ゲストさん!

# 引数を渡して呼び出し
greet("太郎")  # こんにちは、太郎さん!

この例では、greet関数にname引数のデフォルト値を「ゲスト」として設定しています。引数を渡さずに関数を呼び出すと「ゲスト」として扱われ、引数を指定するとその値が優先されます。

可変長引数

関数で受け取る引数の数が不定の場合は、可変長引数を使用できます。可変長引数は、*を使って定義します。

def sum_all(*numbers):
    total = 0
    for num in numbers:
        total += num
    return total

# 関数の呼び出し
result = sum_all(1, 2, 3, 4, 5)
print(result)  # 出力: 15

このコードでは、sum_all関数が任意の数の引数を受け取り、それらをすべて合計して返します。*numbersを使用することで、複数の引数をタプルとして受け取ることができます。

関数のスコープ

関数内で定義された変数は、その関数のスコープ内でのみ有効です。関数の外部からアクセスすることはできません。以下にスコープの例を示します。

def my_function():
    local_var = 10
    print(local_var)

# 関数の外でアクセスするとエラーが発生
# print(local_var)  # NameError: name 'local_var' is not defined

my_function()  # 10が出力される

この例では、my_function内で定義されたlocal_varは、その関数内でのみ有効です。関数外から直接アクセスしようとするとエラーが発生します。

まとめと注意点

  • defはPythonで関数を定義するために使われ、関数は特定の処理を再利用可能な形でまとめることができます。
  • 引数や戻り値を使用することで、柔軟な関数を定義することができ、デフォルト引数や可変長引数もサポートされています。
  • 関数内で定義された変数は、スコープ内でのみ有効であるため、外部からのアクセスはできません。
  • デバッグ時には、関数のスコープや戻り値に注意してコードを設計することが重要です。