Python 模擬試験

Python基礎 模擬試験 第1回 問14・4章 制御構造ツール(デフォルト引数)

ミュータブルなデフォルト値

次のコードを実行したときの出力として、正しいものを1つ選べ。

def f(a, L=[]):
    L.append(a)
    return L

print(f(1))
print(f(2))
  1. A

    [1] と [2]

  2. B

    [1] と [1, 2]

  3. C

    [1, 2] と [1, 2]

  4. D

    TypeError が発生する。

正解と解説を見る

正解:B

デフォルト値は定義時に1回だけ評価されるため、リストなどのミュータブルな値は呼び出しの間で共有される。

順実行する行実行後の変数
1`def f(a, L=[]):`—
2`print(f(1))`—
3└ `L.append(a)`L = [1], a = 1
4└ `return L`L = [1]
5`print(f(2))`—
6└ `L.append(a)`L = [1, 2], a = 2
7└ `return L`L = [1, 2]
結果実際の出力[1] / [1, 2]

学習のポイント:ミュータブルなデフォルト値の落とし穴と、None を使う対策を押さえる。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。