キーワード専用引数
関数に渡す引数を、その位置に関係なく名前で指定したい場合があります。こうすることで、それぞれの引数が何を表しているのかを明確にできます。Pythonでは、これらの引数を「キーワード引数」と呼びます。キーワード専用引数もこれに似ていますが、特別な点があります。それは、キーワードでのみ指定でき、位置で指定することはできないということです。
キーワード専用引数を持つ関数を定義するには、関数シグネチャで
*
記号を使用します。*
の後に現れる引数は、必ずキーワードで指定しなければなりません。長方形の面積を計算する関数を考えてみましょう。この関数は、長さ(
length
)と幅(width
)という2つの引数を必要とします。さらに、小数点以下を含む正確な面積を返すか、小数点以下を含まない四捨五入した面積を返すかを決定するためのオプションのブール引数 rounded
を受け取ることができます。関数を呼び出す際の混乱を防ぐために、rounded
をキーワード専用引数にしたいとします。def rectangle_area(length, width, *, rounded=False):
area = length * width
return round(area) if rounded else area
print(rectangle_area(5.3, 4.2)) # 22.26 を出力、rounded が指定されていないのでデフォルトの False
print(rectangle_area(5.3, 4.2, rounded=True)) # 22 を出力、rounded が True に設定されている
print(rectangle_area(5.3, 4.2, True)) # エラー!rounded はキーワードで指定する必要があります
print(rectangle_area(5.3, 4.2, False)) # エラー!rounded はキーワードで指定する必要があります
print(rectangle_area(length=5.3, width=4.2, rounded=True)) # 22 を出力
この関数は、
length
と width
を位置引数で、rounded
をキーワード引数として指定して呼び出すことができます。第三引数を位置引数として指定しようとすると、エラーが発生します。なお、ここでは位置専用引数として定義していないため、必要に応じて位置引数にもキーワード構文を使用することができます。
チャレンジ: テキストを繰り返す
指定されたテキストを特定の回数繰り返す関数
repeat_text
を作成するタスクがあります。この関数は2つの引数を取ります:text
と times
。text
は繰り返す文字列であり、times
は繰り返しの回数です。times
引数はデフォルト値を 1
とするキーワード専用引数とします。つまり、times
が指定されない場合、関数は元のテキストをそのまま返す必要があります。関数は、
text
を times
回繰り返した文字列を返す必要があります。入力の最初の行には文字列
text
が含まれます。2行目には整数 times
が含まれます。関数は、
text
を times
回繰り返した文字列を返す必要があります。入力 | 出力 |
Hello World!
3 | Hello World!Hello World!Hello World! |
注意: 出力の繰り返されたテキストの間には、空白や他の区切り文字は一切ありません。
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 10 MB