首先看例子:
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']