下面示例:
>>> 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())3070938284L
None是一个常量, 是一个不可变对象, 每次调用myfunc()时value都是None,但是id(myfunc())的值为什么不同呢?
千万里不及你
慕容3067478
相关分类