【Python】引数を指定して関数を呼び出す

この記事では、Pythonの関数を呼び出す際に引数を指定する方法について解説します。

位置引数とキーワード引数の違いや、デフォルト引数や可変長引数の使用方法、さらに引数の順序や組み合わせについても説明します。

初心者の方でもわかりやすく、具体的なサンプルコードと実行結果の例を交えて解説していきます。

目次から探す

引数付きの関数の呼び出し方

関数を呼び出す際に、引数を指定することで関数に必要な情報を渡すことができます。

引数を指定する方法にはいくつかの種類があります。

位置引数とキーワード引数の違い

関数の引数には、位置引数とキーワード引数の2つの種類があります。

位置引数は、引数の順番に従って値を指定する方法です。

一方、キーワード引数は、引数の名前を指定して値を渡す方法です。

位置引数の指定方法

位置引数を指定する場合は、関数の呼び出し時に引数の値を順番に指定します。

例えば、以下のような関数があるとします。

def greet(name, age):
    print("こんにちは!私の名前は{}です。{}歳です。".format(name, age))

この関数を呼び出す際に、位置引数を指定する場合は、以下のようにします。

greet("太郎", 20)

この場合、太郎がnameに、20がageに対応します。

キーワード引数の指定方法

キーワード引数を指定する場合は、引数の名前と値をセットで指定します。

例えば、以下のような関数があるとします。

def greet(name, age):
    print("こんにちは!私の名前は{}です。{}歳です。".format(name, age))

この関数を呼び出す際に、キーワード引数を指定する場合は、以下のようにします。

greet(age=20, name="太郎")

この場合、nameageの順番を入れ替えても正しく値が渡されます。

デフォルト引数の使用方法

関数の引数には、デフォルト値を指定することもできます。

デフォルト値を指定することで、引数が省略された場合にはデフォルト値が使用されます。

デフォルト引数の指定方法

デフォルト引数を指定する場合は、引数の後にイコール(=)を使ってデフォルト値を指定します。

例えば、以下のような関数があるとします。

def greet(name, age=18):
    print("こんにちは!私の名前は{}です。{}歳です。".format(name, age))

この関数を呼び出す際に、age引数を省略すると、デフォルト値の18が使用されます。

greet("太郎")  # 出力結果: こんにちは!私の名前は太郎です。18歳です。

デフォルト引数の注意点

デフォルト引数を指定する際には、注意が必要です。

デフォルト引数は関数が定義された時点で一度だけ評価され、その後は再評価されません。

そのため、可変オブジェクト(リストや辞書など)をデフォルト引数として指定する場合は注意が必要です。

def add_item(item, items=[]):
    items.append(item)
    return items

print(add_item("apple"))  # 出力結果: ['apple']
print(add_item("banana"))  # 出力結果: ['apple', 'banana']

上記の例では、add_item関数を2回呼び出していますが、2回目の呼び出し時には1回目の呼び出し時に作成されたリストが再利用されてしまいます。

このような予期しない結果を避けるためには、デフォルト引数として可変オブジェクトを指定する場合は、Noneを指定し、関数内で新しいオブジェクトを作成するようにすると良いでしょう。

可変長引数の使用方法

関数の引数には、可変長の引数を指定することもできます。

可変長引数を指定することで、任意の数の引数を受け取ることができます。

タプルを使った可変長引数の指定方法

タプルを使った可変長引数を指定する場合は、引数名の前にアスタリスク(*)を付けて指定します。

例えば、以下のような関数があるとします。

def greet(*names):
    for name in names:
        print("こんにちは!{}".format(name))

この関数を呼び出す際に、可変長引数を指定する場合は、以下のようにします。

greet("太郎", "次郎", "三郎")

この場合、指定した全ての引数がタプルとしてnamesに渡されます。

辞書を使った可変長引数の指定方法

辞書を使った可変長引数を指定する場合は、引数名の前にアスタリスク2つ(**)を付けて指定します。

例えば、以下のような関数があるとします。

def greet(**person):
    for key, value in person.items():
        print("{}さん、こんにちは!{}".format(key, value))

この関数を呼び出す際に、可変長引数を指定する場合は、以下のようにします。

greet(太郎="東京", 次郎="大阪", 三郎="名古屋")

この場合、指定した全ての引数が辞書としてpersonに渡されます。

引数の順序と組み合わせ

引数の順序や組み合わせによって、関数の呼び出し方や結果が変わることがあります。

引数の順序の指定方法

引数の順序を指定する場合は、位置引数とキーワード引数を組み合わせて指定します。

例えば、以下のような関数があるとします。

def greet(name, age, city):
    print("こんにちは!私の名前は{}です。{}歳です。{}出身です。".format(name, age, city))

この関数を呼び出す際に、引数の順序を指定する場合は、以下のようにします。

greet("太郎", city="東京", age=20)

この場合、位置引数のnameには太郎が、キーワード引数のcityには東京が、ageには20が対応します。

引数の組み合わせの例

引数の組み合わせによって、関数の呼び出し方や結果が変わることがあります。

例えば、以下のような関数があるとします。

def greet(name, age=18, city="東京"):
    print("こんにちは!私の名前は{}です。{}歳です。{}出身です。".format(name, age, city))

この関数を呼び出す際に、引数を組み合わせて指定する場合は、以下のようにします。

greet("太郎", 20, "大阪")
greet("次郎", city="名古屋")
greet(age=25, name="三郎")

この場合、それぞれの呼び出しにおいて、引数の組み合わせによって異なる結果が得られます。

以上が、引数を指定して関数を呼び出す方法を解説です。

引数の指定方法や組み合わせ方について理解し、効果的に関数を利用してみてください。

目次から探す