Python 为什么不每次都列一个新的清单呢?
为什么它添加到apple中而不是创建一个新列表?答案是函数参数的值在定义时只计算一次。因此,只有在首次定义foo时,参数才会初始化为其默认值。然后它调用foo,并将继续使用最初初始化bar的相同列表 解决方法如下:Python 为什么不每次都列一个新的清单呢?,python,Python,为什么它添加到apple中而不是创建一个新列表?答案是函数参数的值在定义时只计算一次。因此,只有在首次定义foo时,参数才会初始化为其默认值。然后它调用foo,并将继续使用最初初始化bar的相同列表 解决方法如下: >>> def foo(bar=[]): ... bar.append("apple") ... return bar >>> foo() ["apple"] >>> foo() ["appl
>>> def foo(bar=[]):
... bar.append("apple")
... return bar
>>> foo()
["apple"]
>>> foo()
["apple", "apple"]
>>> foo()
["apple", "apple", "apple"]
>>> def foo(bar=None):
... if bar is None: # or if not bar:
... bar = []
... bar.append("baz")
... return bar
...
>>> foo()
["baz"]
>>> foo()
["baz"]
>>> foo()
["baz"]