引数の展開
次のコードを実行したときの出力として、正しいものを1つ選べ。
def f(*args, **kwargs):
return len(args), len(kwargs)
print(f(*[1, 2], **{"a": 1}))
- A
(1, 1) - B
(2, 1) - C
(3, 0) - D
(2, 0)
正解と解説を見る
正解:B
呼び出し側の *リスト は位置引数に、**辞書 はキーワード引数に展開する。受け取る側の *args・**kwargs と対になる。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `def f(*args, **kwargs):` | — |
| 2 | `print(f(*[1, 2], **{"a": 1}))` | — |
| 3 | └ `return len(args), len(kwargs)` | args = (1, 2), kwargs = {'a': 1} |
| 結果 | 実際の出力 | (2, 1) |
- A
誤り。リストは 2 つの位置引数に展開される。
- B
正しい。呼び出し側の
*はリストを位置引数に、**は辞書をキーワード引数に展開する。 - C
誤り。辞書はキーワード引数として渡される。
- D
誤り。キーワード引数が 1 つある。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。