Python チュートリアル - 関数の引数
このセクションでは、Python 関数の引数と、デフォルト引数、キーワード引数、任意の引数などのさまざまなタイプについて学習します。
Python 関数の引数
関数の引数は、関数内で操作が実行される値です。
指定された数の引数を使用して関数を定義する場合、指定された数の引数を渡してこの特定の関数を呼び出す必要があります。
関数定義で指定されているよりも多いか少ない引数を渡すと、TypeError
を受け取ります。
以下のコードを検討してください。
def language(p, n):
"""Function to print a message"""
print("Programming language", n, "is:", p)
language("Python", 1)
language("Java", 2)
Programming language 1 is: Python
Programming language 2 is: Java
関数 language
には 2つの引数があります。また、異なる数の引数で関数を呼び出すと、次のようなエラーが発生します。
>>> language('Python')
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
language('Python')
TypeError: language() takes exactly 2 arguments (1 given)
>>> language(2, 'Python', 'Java')
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
language(2, 'Python', 'Java')
TypeError: language() takes exactly 2 arguments (3 given)
Python 関数の引数タイプ
前の関数の引数の数は固定されています。また、関数は変数の引数を持つこともできます。
関数に変数の引数を渡すには、3つの異なる方法があります。それでは、それらすべてを見ていきましょう。
Python 関数のデフォルト引数
関数では、引数は関数定義で割り当てられるデフォルト値を持つことができます。引数にデフォルト値がある場合、それらの引数に値を渡すのはオプションです:
これを以下の例で示します。
def language(p="C++", n=3):
"""Function to print a message"""
print("Programming language", n, "is:", p)
language()
Programming language 3 is: C++
ここでは、引数は渡されていませんが、プログラムはまだ正常に動作していることがわかります。引数のデフォルト値が提供されているためです。引数のいずれかに値を渡すと、デフォルト値が上書きされます。
Python 関数のキーワード引数
通常、関数定義で定義されているのと同じ順序で複数の引数を渡します。ただし、キーワード引数を使用する場合は、引数の位置を変更できます。
def language(p, n):
"""Function to print a message"""
print("Programming language", n, "is:", p)
language(p="C++", n=3)
Programming language 3 is: C++
キーワード引数を使用して特定の引数に明示的に値を割り当てる場合、引数の位置を変更することもできます。
def language(p, n):
"""Function to print a message"""
print("Programming language", n, "is:", p)
language(n=3, p="C++")
Programming language 3 is: C++
Python 関数の任意の引数
いくつの引数を渡すべきかが事前にわからない場合は、任意の引数が使用されます。
任意の関数は、引数の名前の前にアスタリスク*
で示されます。キーワードを持たない引数をタプルとして関数に渡します。
def language(*args):
"""Demo function of arbitray arguments"""
for i in args:
print("Programming language:", i)
language("Java", "C++", "R", "Kotlin")
Programming language: Java
Programming language: C++
Programming language: R
Programming language: Kotlin
この関数は、複数の引数を渡すことで呼び出されます。これらの引数は、関数が実際に呼び出される前にタプルに変換されます。
ダブルアスタリスク** kwargs
は、任意のキーワード引数を関数に渡すイディオムです。例えば、
def language(**kwargs):
"""Demo funciton of arbitrary keyword arguments"""
for a in kwargs:
print(a, kwargs[a])
language(country="NL", code="+31")
country NL
code +31
このキーワードの引数は、keys
がキーワードで values
が対応する値である辞書として渡されます。上記の例のように、渡された引数は辞書に変換されます {'country':" NL "、 'code':" + 31 "}