-1

重複の可能性:
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']
4

1 に答える 1

0

関数second_appendは、呼び出されるたびに常に新しいローカル リストを作成します。

于 2012-07-17T20:00:22.097 に答える