Python のオプション引数
Python ではデフォルト引数と呼ばれるものがあります。Python ではオプション引数やオプションパラメータとも呼ばれています。引数やパラメータはどちらも同じ意味です。これらの言葉を入れ替えて使うことができます。引数やパラメータは関数が受け取る入力です。
複数のオプション引数を持つ Python 関数
関数を呼び出すときはいつも、関数が引数を取るかどうかによって、その関数にいくつかの引数を渡さなければなりません。関数に引数を渡すことは必須ではありません。関数は引数を取らないこともできますし、任意の数の引数を取ることもできます(関数がどのように定義されているかによって異なります)。複数の引数を渡す方法は 2つあります。
*args
(非キーワード引数)を使用する
# Function Defination
def myfunction(first_name, last_name, *args):
print(first_name)
print(last_name)
for argument in args:
print(argument)
# Calling the Function
myfunction('Tim','White',999888999,30)
出力:
Tim
White
999888999
30
**kargs
(キーワード引数)を使用する
def myFunction(**kwargs):
#printing all values which are passed in as an argument
for key, value in kwargs.items():
print ("%s = %s" %(key, value))
# Calling the Function
myFunction(first_name='Tim', last_name='White', mob=99999999, age='30')
出力:
first_name = Tim
last_name = White
mob = 99999999
age = 30
*args
と **kargs
はどちらも可変長の引数であり、関数に可変数の引数を渡すために使用されます。
関数を作成する際には、それが入力として受け取るパラメータや引数の数を定義しなければなりません。これらは形式引数と呼ばれます。そして、その関数を呼び出すときはいつでも、その関数にいくつかの値を渡さなければならず、それらの値は実際の引数と呼ばれます。
Python で引数をオプションにする
3つの引数またはパラメータ name
、number
、age
を入力として受け取る関数があるとしましょう。
# Function Defination
def personalDetails(name, number, age):
print("This function takes 3 parameters as input")
関数 personalDetails
を呼び出したい場合は、3つのパラメータをすべて関数の入力として渡さなければなりません。
def personalDetails(name, number, age):
print("This function takes 3 parameters as input")
print("Name: ",name)
print("Number: ",number)
print("Age: ", age)
# Calling the function
personalDetails('Adam', 987654321, 18)
出力:
This function takes 3 parameters as input
Name: Adam
Number: 987654321
Age: 18
ここでは、関数を呼び出している間にパラメータを渡し忘れたり見逃したりした場合、エラー (TypeError: personalDetails missing a required positional argument
) が発生する可能性があります。
上記の関数に自分の年齢を引数として渡したくない場合は、任意の引数と呼ばれるものを使用することができます。python では引数やパラメータを任意の数だけオプションにすることができます。引数をオプションにするには、その引数に何らかのデフォルト値を代入しなければなりません。
ここでは、引数 age
をオプションにするために、関数定義で引数 age
にデフォルト値を追加してオプションにすることができます。この場合、0
やその他の任意の値で初期化してみましょう。これで Python はこの引数を任意の引数とみなします。つまり、age
パラメータに何も値を渡さなくても、関数は動作し、デフォルト値(この場合は 0
)を使用します。
def personalDetails(name, number, age = 0):
print("Age is now an optional argument.")
print("Age is: ",age)
# Calling the function
personalDetails('Sam', 123456789)
出力:
Age is now an optional argument.
Age is: 0
関数 personalDetails
を呼び出している間に age
引数の値を指定したい場合でも、指定することができます。これで、デフォルト値の代わりに指定した新しい値を考慮するようになります。
def personalDetails(name, number, age = 0):
print("Age is now an optional argument.")
print("Age is: ",age)
# Calling the function
personalDetails('Sam', 123456789, 25)
出力:
Age is now an optional argument.
Age is: 25
まとめ
任意の引数をデフォルト値で初期化するときはいつでも、それはデフォルト引数として知られています。これは最終的にはその引数もオプションになります。これは Python ではオプション引数またはオプションパラメータとして知られています。
しかし、関数を呼び出す際にオプション引数に何らかの値を渡した場合、関数はデフォルト値の代わりにその新しい値を取ります。