【Python】05_関数定義と引数の扱い方を詳しく解説

Python Python

Pythonでは、関数を使ってコードを整理し、再利用性を高めることができます。関数を定義すると、プログラム内のどこからでもその機能を呼び出して実行できます。

この記事では、Pythonの関数定義に関連する様々な要素を解説します。具体的には、関数の定義方法引数戻り値デフォルト引数、そして**可変長引数(*args、**kwargs)**について説明します。

1. 関数定義(def)

Pythonで関数を定義するには、def キーワードを使います。その後に関数名を続けて、丸括弧の中に引数を定義します。関数定義の基本的な形は以下の通りです。

基本的な関数定義

def greet():
    print("Hello, world!")

この greet 関数は、特定の引数を必要とせず、「Hello, world!」を出力するだけの関数です。

関数を呼び出す

関数を実際に実行するためには、次のように関数名を使って呼び出します。

greet()  # Hello, world!

2. 引数

関数にデータを渡すためには、引数を使います。引数を指定すると、関数はその引数を使って特定の処理を行います。

引数付きの関数定義

def greet(name):
    print(f"Hello, {name}!")

この関数は、呼び出す際に引数 name を受け取り、その引数に基づいて挨拶を行います。

greet("Alice")  # Hello, Alice!

3. 戻り値

関数が計算や処理を行い、その結果を返すためには、戻り値を使います。return キーワードを使って、関数から値を返します。

戻り値付きの関数

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

この関数は、2つの引数を受け取り、それらの和を返します。

result = add(3, 5)
print(result)  # 8

4. デフォルト引数

デフォルト引数は、関数に引数が渡されなかった場合に使われるデフォルトの値です。これにより、引数が省略されたときに特定の値を使うことができます。

デフォルト引数付きの関数

def greet(name="world"):
    print(f"Hello, {name}!")

この場合、name 引数が渡されなければ、デフォルトで「world」という値が使われます。

greet()         # Hello, world!
greet("Alice")  # Hello, Alice!

デフォルト引数は、必ず通常の引数の後に定義する必要があります。

# 正しい
def greet(name="world", age=30):
    print(f"Hello, {name}, you are {age} years old.")

# 誤り: デフォルト引数は通常の引数の後に定義
# def greet(age=30, name):  # エラーになる

5. **可変長引数(*args, kwargs)

関数に渡す引数の数があらかじめ決まっていない場合は、可変長引数を使います。これには、*args と **kwargs があります。

 

5.1. *可変長引数(args)

*args を使うと、複数の位置引数をタプルとして関数に渡すことができます。* は、引数が任意の数であることを示しています。

*args の例

def add_all(*args):
    return sum(args)

この関数は、任意の数の引数を受け取り、それらの合計を計算します。

print(add_all(1, 2, 3))  # 6
print(add_all(5, 10))    # 15

*args は、引数をリストやタプルのように扱うことができます。

 

5.2. **キーワード可変長引数(kwargs)

**kwargs を使うと、名前付き(キーワード)引数を辞書として受け取ることができます。これにより、関数に渡す引数の名前を指定できます。

**kwargs の例

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

この関数は、任意の数のキーワード引数を受け取り、それらを表示します。

print_info(name="Alice", age=25, city="New York")
# 出力:
# name: Alice
# age: 25
# city: New York

6. *args と **kwargs を同時に使う

*args と **kwargs は、同時に関数で使用することもできます。この場合、まず *args を指定し、その後に **kwargs を指定します。

def func_example(*args, **kwargs):
    print(f"位置引数: {args}")
    print(f"キーワード引数: {kwargs}")

func_example(1, 2, 3, name="Alice", age=25)
# 出力:
# 位置引数: (1, 2, 3)
# キーワード引数: {'name': 'Alice', 'age': 25}

まとめ

  • 関数定義は def キーワードを使い、引数や戻り値を設定します。

  • 引数を使うことで、関数に外部のデータを渡し、処理を行います。

  • 戻り値は return を使って関数の計算結果を返します。

  • デフォルト引数は、引数が指定されなかった場合に使われる値です。

  • **可変長引数(*args、**kwargs)**は、関数が任意の数の引数やキーワード引数を受け取るために使われます。

コメント

PAGE TOP
タイトルとURLをコピーしました