首先看例子:
1 def modify_default_value(param=[]):
2 param.append('value')
3 print param
4 modify_default_value()
5 modify_default_value()
输出:
['value']
['value', 'value']
为什么第二输出会与第一行输出不一样?有点违反直觉,不是吗?
在python中参数默认
值存储在函数对象里,当这个值是个可修改对象(mutable object)时(如:list,dictionary),函数中对默认参数值的修改会彻底地改变这个函数的参数默认值,这也就是为什么第二次调用modify_default_value输出会不一样了.为了更好地理解函数参数默认值,试试从函数外部探查一下函数的参数默认值:
print modify_default_value.func_defaults
输出:
['value', 'value']