目次
問題
次のコードを実行した時の出力として正しいのは A 〜 D のどれでしょうか?
解答
正解は。。。
正解は D の
[1]
[1, 1]
です。
解説
このコードのキーポイントは、関数foo()
のデフォルト引数の扱いです。
デフォルト引数は関数実行時に引数が指定されなかった場合に使われるデフォルトの値を設定できる機能です。
Python において、デフォルト引数は関数が定義されたときに一度だけ評価されます。
この問題の場合、
- 最初の
foo()
の実行では、x
はデフォルトの空リストになっています。その後、x.append(1)
でx
は[1]
になり、[1]
が出力されます。 - 次の
foo()
の実行では、x
は最初のfoo()
の実行後の[1]
になっています。そのため、x.append(1)
でx
は[1, 1]
になり[1, 1]
が出力されます。
したがって、全体としての出力は、
[1]
[1, 1]
となります。
Python におけるデフォルト引数のような機能は他のプログラミング言語にもありますが、プログラミング言語によっては実行時にも評価されるものもあるため、プログラミング言語ごとにその仕様を確認する必要があります。
Google Colaboratory
下記リンクからアクセスして、Google Colaboratory 上で実際にコードを実行して、結果を確認していただけます。
おわりに
X の Taklog アカウントで Python クイズを配信しています。
Posts by taklog_infoよかったらフォローしてください!
以上です。
コメント