デフォルト引数
デフォルト引数を利用すると、実引数を渡されなかった場合に仮引数に代入される値を設定することができる。
code:arg_default1.py
def func(a=1, b=2, c=3, d=4):
print(a, b, c, d)
func() # 何も渡していない
func関数の呼出し時に引数を渡さなかった例、全てデフォルト引数の値が用いられている。
部分的に渡してみよう。
code:arg_default2.py
def func(a=1, b=2, c=3, d=4):
print(a, b, c, d)
func(-1, -2)
仮引数より少ない数の実引数を渡している。こうすると、先頭の仮引数から順に値が渡される。
code:arg_default3.py
def func(a=1, b=2, c=3, d=4):
print(a, b, c, d)
func(c=-1, d=-2)
実引数の指定において、一般の引数と名前付き引数が混在する場合。
code:arg_default4.py
def func(a=1, b=2, c=3, d=4):
print(a, b, c, d)
func(-1, -2, d=-4)
一般の引数と仮引数が記述された順に対応づけられ、名前付き引数も対応する仮引数に代入される。
それ以外の仮引数にはデフォルト引数が用いられる。
通常の引数とデフォルト引数の混在:
通常の引数とデフォルト引数を混在させよう。仮引数を記述するにあたっては通常の引数の後にデフォルト引数を記述する。
code:arg_default5.py
def func(a, b, c=3, d=4): # 通常の引数 / デフォルト引数 の順
print(a, b, c, d)
func(-1, -2, -3, -4)
デフォルト引数が先に記述されてはいけない。
code:arg_default6.py
def func(a=1, b, c=3, d=4): # bよりa=1を先に置くのはNG
print(a, b, c, d)
func(-1, -2, -3 ,-4)
code:arg_default7.py
def myfunc(name='名無しさん', age='年齢不詳'):
print('名前:', name)
print('年齢', age)
n = 'Taro'
a = 18
print('# 引数を与えなかった場合には、デフォルト引数が採用される(1)')
myfunc()
print('# 引数を与えなかった場合には、デフォルト引数が採用される(2)')
myfunc(name='Jiro') # 一部だけ与えてみる