*arguments と **keywords
次のコードを実行したときの出力として、正しいものを1つ選べ。
def cheeseshop(kind, *arguments, **keywords):
print(kind, arguments, keywords)
cheeseshop("Limburger", "It is runny", shopkeeper="Michael")
- A
Limburger It is runny Michael - B
Limburger ['It is runny'] {'shopkeeper': 'Michael'} - C
TypeErrorが発生する。 - D
Limburger ('It is runny',) {'shopkeeper': 'Michael'}
正解と解説を見る
正解:D
*引数名 は余った位置引数をタプルで、**引数名 は余ったキーワード引数を辞書で受け取る。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `def cheeseshop(kind, *arguments, **keywords):` | — |
| 2 | `cheeseshop("Limburger", "It is runny", shopke…` | — |
| 3 | └ `print(kind, arguments, keywords)` | kind = 'Limburger', arguments = ('It is runny',), keywords = {'shopke… |
| 結果 | 実際の出力 | Limburger ('It is runny',) {'shopkeeper': 'Michael'} |
- A
誤り。arguments はタプル、keywords は辞書として出力される。
- B
誤り。
*argumentsはリストではなくタプル。 - C
誤り。余分な位置引数とキーワード引数は、それぞれ
*argumentsと**keywordsで受け取れる。 - D
正しい。余った位置引数は
*argumentsにタプルで、余ったキーワード引数は**keywordsに辞書で入る。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。