函数中的默认参数 - Python

时间:2015-03-02 15:19:41

标签: python function arguments

所以,这是一段代码:

def function(item, stuff = []):
    stuff.append(item)
    print stuff

function(1)
# print '[1]'

function(2)
# print '[1,2]'

据我所知,这表明,在程序运行期间更改的默认值在每次函数调用时仍然会更改。但为什么这段代码:

def function(item, stuff  = 0):
    stuff  += item
    print stuff  

function(3)
function(3)

每次跑步都打印'3'?

1 个答案:

答案 0 :(得分:2)

Python中的列表 mutable :它们可以在创建后进行修改。这就是当你调用第一个函数时stuff列表增长的原因,每次都是相同的列表对象。

另一方面,整数是不可变的。创建它们后,您无法更改它们。这是做什么的

a = 2
a += 1

是从“2”对象中删除a标签,然后将其附加到“3”对象。

这就是“0”对象(第二个函数的stuff参数的默认值)保持不变并且每次都得到3的原因。