Python での位置引数とキーワード引数

Aditya Raj 2023年1月30日
  1. Python の引数とは何ですか
  2. Python の位置引数とは何ですか
  3. Python のキーワード引数とは何ですか
  4. 位置引数とキーワード引数:何を使用する必要がありますか
  5. まとめ
Python での位置引数とキーワード引数

Python で関数を呼び出すときに、入力値を渡す必要があることがよくあります。この記事では、Python での位置引数とキーワード引数について説明します。また、位置引数とキーワード引数についても説明します。ここでは、Python の関数に入力を提供するための、これら両方のアプローチの長所と短所について説明します。

Python の引数とは何ですか

引数を理解するために、人の nameidentity_numberageweight の 4つの値を取り、それらを出力する関数 printDetails() を宣言しましょう。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)

ここで、nameidentity_numberage、および weight は、関数 printDetails() のパラメーターと呼ばれます。したがって、パラメータは関数のシグネチャ/宣言の一部であると言えます。

ここで、関数 printDetails() に、入力として name- Adityaidentity_number- TM2017001age- 23weight- 65 を入力して、関数 printDetails() を呼び出したいとします。次のようにできます。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", "TM2017001", 23, 65)

出力:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

ここで、AdityaTM201700123、および 65 は、関数 printDetails() の引数です。関数の実行時に、値 Aditya がパラメーターname に割り当てられ、TM2017001 がパラメーターidentity_number に割り当てられ、23 がパラメーターage に割り当てられ、65 がパラメーターweight に割り当てられます。したがって、引数は関数に渡される値であり、パラメーターは引数が割り当てられている関数で宣言された変数であると言えます。

パラメータに引数を割り当てるには、関数でパラメータが宣言されている順序で値を渡すことができます。または、引数をパラメータに直接割り当てることもできます。これに基づいて、Python の引数は位置引数とキーワード引数に分類されます。それらについて一つずつ議論していきましょう。

Python の位置引数とは何ですか

関数に引数を直接渡し、その位置に基づいてパラメーターに割り当てられる場合、それは位置引数と呼ばれます。たとえば、次のように値 AdityaTM201700123、および 65 を使用して関数 printDetails() を呼び出すと、

printDetails("Aditya", "TM2017001", 23, 65)

すべての入力引数は、関数呼び出しでの位置と関数宣言でのパラメーターの位置に基づいてパラメーターに割り当てられます。これをよりよく理解するために、関数呼び出しと関数宣言を一緒に書いてみましょう。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", "TM2017001", 23, 65)

出力:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

ここで、printDetails()関数に、nameidentity_numberage、および weight の順序のパラメーターがあることがわかります。したがって、Adityaname に割り当てられ、TM2017001identity_number に割り当てられ、23age に割り当てられ、65weight に割り当てられます。

Python のキーワード引数とは何ですか

関数に値だけを渡す代わりに、次のようにそれらをパラメーターに直接割り当てることができます。

printDetails(name="Aditya", identity_number="TM2017001", age=23, weight=65)

ここでは、各パラメーターはキーのように機能し、各引数は値として機能します。したがって、引数はキーワード引数と呼ばれます。実行時に、関数は位置引数の場合と同じように機能します。これは、次の例で確認できます。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails(name="Aditya", identity_number="TM2017001", age=23, weight=65)

出力:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

位置引数とキーワード引数:何を使用する必要がありますか

実行について言えば、位置引数とキーワード引数の両方が同じ効率を持っています。これらのアプローチのいずれかを使用するかどうかは、利便性によって異なります。

位置引数を使用しているときに、入力引数の位置を変更すると、望ましくない結果が生じる可能性があります。たとえば、次の例を見てください。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails(65, "TM2017001", 23, "Aditya")

出力:

Name is: 65
Identity Number is: TM2017001
Age is: 23
Weight is: Aditya

ここでは、65 がパラメータ name に割り当てられており、Aditya がパラメータ weight に割り当てられています。したがって、対応するパラメーターが関数宣言で定義されているのと同じ順序で位置引数を渡すことが重要です。

一方、キーワード引数を使用しながら、任意の順序で引数を渡すことができます。関数の出力には影響しません。これは、次の例で確認できます。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails(weight=65, identity_number="TM2017001", age=23, name="Aditya")

出力:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

したがって、引数の位置の変更によって発生する可能性のあるエラーを回避したい場合は、キーワード引数を使用することをお勧めします。

次のプログラムに示すように、単一の関数呼び出しで位置引数とキーワード引数を使用することもできます。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", "TM2017001", age=23, weight=65)

出力:

Name is: Aditya
Identity Number is: TM2017001
Age is: 23
Weight is: 65

ここでは、対応するパラメーターが定義されているのと同じ場所で、位置引数が関数に渡されることがわかります。それに比べて、キーワード引数は任意の順序で渡すことができます。また、キーワード引数を渡した後、位置引数を渡すことはできません。

キーワード引数を渡したら、残りのすべての引数をキーワード引数として渡す必要があります。そうしないと、次の例で確認できるように、プログラムでエラーが発生します。

def printDetails(name, identity_number, age, weight):
    print("Name is:", name)
    print("Identity Number is:", identity_number)
    print("Age is:", age)
    print("Weight is:", weight)


printDetails("Aditya", identity_number="TM2017001", 23, weight=65)

出力:

  File "/home/aditya1117/PycharmProjects/pythonProject/webscraping.py", line 8
    printDetails("Aditya", identity_number="TM2017001", 23, weight=65)
                                                        ^
SyntaxError: positional argument follows keyword argument

したがって、都合に応じて、同じ関数呼び出しで位置引数、キーワード引数、またはその両方を選択できます。

まとめ

この記事では、Python での位置引数とキーワード引数について学習しました。また、位置引数とキーワード引数についても説明し、実行効率の点で両方のアプローチが等しいと結論付けました。1 回の関数呼び出しでそれらを一緒に使用することもできます。キーワード引数の後に位置引数を使用することはできないことに注意してください。

著者: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

関連記事 - Python Function

関連記事 - Python Argument