重複の可能性:
Pythonの「驚き最小の原則」:可変のデフォルト引数
以下の2つの方法の違いを理解しようとしています。
def first_append(new_item, a_list=[]):
a_list.append(new_item)
return a_list
def second_append(new_item, a_list=None):
if a_list is None:
a_list = []
a_list.append(new_item)
return a_list
first_append
複数回呼び出されたときに追加し続けa_list
、それを成長させます。ただし、second_append
常に長さ1のリストを返します。ここでの違いは何ですか?
例:
>>> first_append('one')
['one']
>>> first_append('two')
['one', 'two']
>>> second_append('one')
['one']
>>> second_append('two')
['two']