下面示例:>>> def function(data=[]):... data.append(1)... return data... >>> function()[1]>>> function()[1, 1]>>> function()[1, 1, 1]>>> id(function())3076744140L>>> id(function())3076744140L說明python實際上是先把默認參數的值計算出來,以后每次調用都是用以前計算出的值. 這里每次function調用使用同一個data, 這里的data是可變對象, 因此data的值不斷append.那么下面的例子:>>> def myfunc(value=None):... if(value is None):... value=[]... value.append(5)... return value... >>> myfunc()[5]>>> myfunc()[5]>>> id(myfunc())3070938636L>>> id(myfunc())3070938284L>>> id(myfunc())3070938284LNone是一個常量, 是一個不可變對象, 每次調用myfunc()時value都是None,但是id(myfunc())的值為什么不同呢?
添加回答
舉報
0/150
提交
取消