位置引数とキーワード引数とデフォルト引数
引数が単体の場合
def menu(entree):
print(entree)
menu('beef')
beef
位置引数
引数が複数の場合 順序を正しくする必要があります。
def menu(entree, drink, dessert):
print(entree)
print(drink)
print(dessert)
menu('beef', 'ice'、'beer')
beef
ice
beer
間違えると上記の様にdrinkにiceが入りdessertにbeerが入ります。
キーワード引数
そこで、間違いを避けるためにキーワードを追加して下記の様に書きます。
def menu(entree, drink, dessert):
print('entree = ', entree)
print('drink = ', drink)
print('dessert = ', dessert)
menu(entree='beef', dessert='ice', drink='beer')
entree = beef
drink = beer
dessert = ice
するとiceとbeerの順序を間違えて書いても、drinkとdessertの順に直してくれています。
位置引数とキーワード引数を混ぜて使う
キーワード引数の全てのキーワードの省略
順序が同じ場合すべてのキーワードを省いても結果は同じになります。
def menu(entree, drink, dessert):
print(‘entree = ‘, entree)
print(‘drink = ‘, drink)
print(‘dessert = ‘, dessert)
menu(‘beef’, ‘beer’, ‘ice’)
entree = beef
drink = beer
dessert = ice
キーワード引数の一部キーワードの省略
但順序が同じ場合、第一引数(entree)のキーワードを省略しても大丈夫ですが、
def menu(entree, drink, dessert):
print('entree = ', entree)
print('drink = ', drink)
print('dessert = ', dessert)
menu('beef', drink = 'beer', dessert = 'ice')
entree = beef
drink = beer
dessert = ice
順序が同じでも、第2引数以降のキーワード(drink,dessert)の省略はエラーになります。
def menu(entree, drink, dessert):
print('entree = ', entree)
print('drink = ', drink)
print('dessert = ', dessert)
menu(entree = 'beef', 'beer', dessert = 'ice')
menu(entree = ‘beef’, ‘beer’, dessert = ‘ice’)
^
SyntaxError: positional argument follows keyword argument
同様順序が同じでも、第3引数(dessert)のキーワードを省略するとエラーが返ります。
def menu(entree, drink, dessert):
print('entree = ', entree)
print('drink = ', drink)
print('dessert = ', dessert)
menu(entree = 'beef', drink = 'beer', 'ice')
menu(entree = ‘beef’, drink = ‘beer’, ‘ice’)
^
SyntaxError: positional argument follows keyword argument
順序が同じで、第2第3引数を省略するとエラーが返ります。
def menu(entree, drink, dessert):
print('entree = ', entree)
print('drink = ', drink)
print('dessert = ', dessert)
menu(entree = 'beef', 'beer', 'ice')
menu(entree = ‘beef’, ‘beer’, ‘ice’)
^
SyntaxError: positional argument follows keyword argument
このように、順序が同じでもキーワードの省略は第一引数までのようです。
順序が変わる場合はキーワードは必須になるでしょう。
def menu(entree, drink, dessert):
print('entree = ', entree)
print('drink = ', drink)
print('dessert = ', dessert)
menu('beer', entree = 'beef', dessert = 'ice')
menu(‘beer’, entree = ‘beef’, dessert = ‘ice’)
TypeError: menu() got multiple values for argument ‘entree’
第一引数(entree)がダブっているエラーが返ります。
位置引数とキーワード引数が混在する場合は注意が必要になります。
デフォルト引数
関数定義(def)の際、前もってデフォルトの引数の値を指定します。
def menu(entree= 'beef', drink= 'wine', dessert= 'ice'):
print('entree = ', entree)
print('drink = ', drink)
print('dessert = ', dessert)
menu()
entree = beef
drink = wine
dessert = ice
すると関数実行の際引数指定がない場合には、デフォルトの値が呼び出されます。
引数に値を指定すると、書き換えが行われます。
def menu(entree= 'beef', drink= 'wine', dessert= 'ice'):
print('entree = ', entree)
print('drink = ', drink)
print('dessert = ', dessert)
menu(entree='chiken')
entree = chiken
drink = wine
dessert = ice
def menu(entree= 'beef', drink= 'wine', dessert= 'ice'):
print('entree = ', entree)
print('drink = ', drink)
print('dessert = ', dessert)
menu('chiken', drink= 'beer')
entree = chiken
drink = beer
dessert = ice
コメント