def test(def_arg=None):if def_arg == None:
def_arg = []
def_arg.append(1)return def_argtest()test()第一次调用test函数时,def_arg在函数定义时已被赋值为None值,所以def_arg被绑定到一个列表对象,然后增加了一个item。第二次调用test函数时,def_arg的值为什么仍然是None而不是[1]呢?
1 回答
![?](http://img1.sycdn.imooc.com/5c4aa098000126bb09600960-100-100.jpg)
繁星coding
TA贡献1797条经验 获得超4个赞
def add_end(L=[]):
L.append('END')return L
Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。
添加回答
举报
0/150
提交
取消