Pythonにおける引数の組み合わせ
同じ関数に、キーワード引数と位置引数を同時に
渡すことができます。
これはシンボル*を使って行います。
このシンボルは、右側に指定された引数を、
デフォルト値を使用しない場合、キーワード引数として
扱うべきであることを示します。
すべての引数をコンソールに出力する関数を
作成してみましょう。変数dataは
通常の位置引数を表します。その後、シンボル
*の後に、デフォルト値を持つ2つの変数
startとendを指定します。
しかし、関数を呼び出す際には、これらの
変数をキーワード引数にします:
def func(data, *, start=0, end=100):
print(data, start, end)
func(1, start=2, end=3)
コード実行結果:
1 2 3
一方、変数startのデフォルト値を削除し、
同時にキーワード引数として指定しなかった場合、
エラーが発生します。
これは、シンボル*が既にstartを
キーワード引数として定義しているためです:
def func(data, *, start, end=100):
print(data, start, end)
func(1, 2, end=3) # エラーが出力されます
次のコードを実行した結果はどうなりますか:
def func(num1, num2, *, num3):
return (num1 + num2) * num3
print(func(2, 4, num3=3))
次のコードを実行した結果はどうなりますか:
def func(num1, *, num2, num3):
return (num1 - num2) / num3
print(func(12, 4, num3=5))
次のコードを実行した結果はどうなりますか:
def func(*, name='user1', age='18'):
return 'Username is ' + name + ' age is ' + age
print(func(name='john'))