辞書のアンパック
次のコードを実行したときの出力として、正しいものを1つ選べ。
def f(a, b):
return a - b
print(f(**{"b": 1, "a": 5}))
- A
-4 - B
4 - C
TypeErrorが発生する。 - D
{'b': 1, 'a': 5}
正解と解説を見る
正解:B
関数を呼び出すときに ** を付けると、辞書をキーワード引数として展開して渡せる。
| 順 | 実行する行 | 実行後の変数 |
|---|---|---|
| 1 | `def f(a, b):` | — |
| 2 | `print(f(**{"b": 1, "a": 5}))` | — |
| 3 | └ `return a - b` | a = 5, b = 1 |
| 結果 | 実際の出力 | 4 |
- A
誤り。キーの名前で引数に渡されるので、辞書の並び順は関係ない。
- B
正しい。
**で辞書を展開すると、キーワード引数a=5, b=1として渡される。 - C
誤り。キーが引数の名前と一致しているので、エラーにならない。
- D
誤り。辞書がそのまま返されるわけではない。
このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。