次のコードの最後のprint文で表示される内容はどれですか?ndef f(x, lst=[]):n lst.append(x)n return lstnnf(1)nprint(f(2))
関数のデフォルト引数は、関数が定義された時点で一度だけ評価されます。lst=[]の空リストも定義時に1つだけ作られ、以降の呼び出しで使い回されます。そのため1回目のf(1)で[1]になったリストが残り、2回目のf(2)では同じリストに2が追加されて[1, 2]が返ります。この挙動を避けるには、デフォルト値をNoneにして、関数内でif lst is None: lst = []と新しく作るのが定番の書き方です。