以下の内容はhttps://pydocument.hatenablog.com/entry/2023/04/01/000316より取得しました。


Python 関数の4種類の引数を解説: 位置引数、キーワード引数、デフォルト引数、可変長引数

Pythonは読みやすく、効率的なコードを記述できるオブジェクト指向プログラミング言語です。 Pythonの関数は、様々な種類の引数を受け取ることができ、これらを理解し活用することで、柔軟かつ効率的なプログラミングが可能になります。 この記事では、Pythonの関数の引数について、基本的な概念から具体的な使用例までを解説します。

引数の種類と使い分け

Pythonの関数で使用される主な引数は以下の4種類です。場面に応じてこれらの引数を適切に組み合わせることで、関数の柔軟性と可読性を向上させることができます。位置引数は順序が重要な場合に、キーワード引数は引数の意味を明確にしたい場合に利用します。また、デフォルト引数は省略可能な引数を設定したい場合に、可変長引数は引数の数が不定の場合に用います。

引数の種類 説明
位置引数 関数定義時のパラメータの順序に従って値を渡す引数です。最も基本的な引数の渡し方です。
キーワード引数 引数名=値 の形式で、関数呼び出し時に引数名を明示して値を渡す引数です。引数の順序を関数定義と変えることができます。
デフォルト引数 関数定義時にあらかじめデフォルト値を設定しておく引数です。関数呼び出し時に引数が省略された場合、デフォルト値が使用されます。
可変長引数 (位置) *args の形式で、任意の数の位置引数を受け取ることができる引数です。関数内で args はタプルとして扱われます。
可変長引数 (キー) **kwargs の形式で、任意の数のキーワード引数を受け取ることができる引数です。関数内で kwargs は辞書として扱われます。

1. 位置引数

位置引数は、関数定義でパラメータが定義された順序で値を渡す、最も基本的な引数の形式です。例えば、下記のadd_numbers()関数では、関数定義の (x, y) に対応して、順番にx1y2 が渡されます。

def add_numbers(x, y):
    return x + y

result = add_numbers(1, 2)  # x に 1、y に 2 が渡される
print(result)  # 出力: 3

2. キーワード引数

キーワード引数は、関数呼び出し時に 引数名=値 の形式で引数を指定します(下記のコードでは`Name="Alice"の部分)。これにより、関数定義時のパラメータの順序に依存せず、任意の順序で引数を渡すことができます。

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

greet(name="Alice", greeting="Hello")  # 出力: Hello, Alice!
greet(greeting="Hi", name="Bob")      # 出力: Hi, Bob!

キーワード引数を使用することで、引数の意味が明確になり、コードの可読性が向上します。 特に、引数の数が多い関数や、デフォルト引数を持つ関数で有効です。

3. デフォルト引数

デフォルト引数は、関数定義時にパラメータにデフォルト値を設定します(下記のコードのexponent=2の部分)。関数呼び出し時に引数が省略された場合、デフォルト値が使用されます。

def power(base, exponent=2):
    return base ** exponent

result1 = power(3)       # exponent は省略され、デフォルト値 2 が使用される
print(result1)  # 出力: 9 (3の2乗)

result2 = power(3, 3)    # exponent に 3 が渡される
print(result2)  # 出力: 27 (3の3乗)

デフォルト引数を使うことで、関数の呼び出しを簡潔にし、かつ柔軟性を持たせることができます。ただし、デフォルト引数にはミュータブルなオブジェクト (リストや辞書など) を使用しないようにしてください。予期せぬ動作の原因となる可能性があります。

4. 可変長引数

可変長引数は、関数が任意の数の引数を受け取れるようにする機能です。位置引数の可変長引数とキーワード引数の可変長引数の2種類があります。

4.1. 可変長位置引数 (*args)

*args は、任意の数の位置引数をタプルとして受け取ります。

例: 任意の数の数値の合計を計算する関数

def sum_numbers(*args):
    total = 0
    for number in args:
        total += number
    return total

result1 = sum_numbers(1, 2, 3)
print(result1)  # 出力: 6

result2 = sum_numbers(1, 2, 3, 4, 5)
print(result2)  # 出力: 15

*args は、関数内でタプル args として扱われます。sum_numbers 関数は、渡されたすべての引数を args タプルとして受け取り、その要素を反復処理して合計を計算します。

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

**kwargs は、任意の数のキーワード引数を辞書として受け取ります。

例: 人物の情報を表示する関数

def describe_person(name, **kwargs):
    print(f"Name: {name}")
    for key, value in kwargs.items():
        print(f"{key.capitalize()}: {value}")

describe_person("Alice", age=30, city="Tokyo")
# 出力:
# Name: Alice
# Age: 30
# City: Tokyo

**kwargs は、関数内で辞書 kwargs として扱われます。describe_person 関数は、必須の name 引数と、任意の数の追加情報をキーワード引数として受け取り、それらを表示します。

まとめ

Pythonの関数の引数には、位置引数、キーワード引数、デフォルト引数、可変長引数があります。 これらを組み合わせることで、柔軟で可読性の高い関数を作成できます。

  • 位置引数: 基本的な引数の渡し方。順序が重要。
  • キーワード引数: 引数名=値 で指定。順序は任意。可読性が向上。
  • デフォルト引数: 省略可能な引数。デフォルト値を設定。
  • 可変長引数:
    • *args: 任意の数の位置引数をタプルとして受け取る。
    • **kwargs: 任意の数のキーワード引数を辞書として受け取る。

これらの引数の種類を理解し、適切に使い分けることが、Pythonプログラミングのスキルアップに繋がります。具体的な例を通して、各引数の動作と利点を理解し、実際のコードで活用してください。

最後にPythonの基礎学習に理代可能なサイトを紹介します。

[PR]

click.linksynergy.com

click.linksynergy.com




以上の内容はhttps://pydocument.hatenablog.com/entry/2023/04/01/000316より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14