-1

可能的重复:
Python 中的“Least Astonishment”:可变默认参数

我试图了解以下两种方法之间的区别:

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_appenda_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 回答