为了账号安全,请及时绑定邮箱和手机立即绑定

在定义python函数的默认参数时,为什么使用不可变对象就可以避免可变对象带来的问题?

在定义python函数的默认参数时,为什么使用不可变对象就可以避免可变对象带来的问题?

米脂 2019-01-04 21:43:02
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 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

def add_end(L=[]):

L.append('END')return L

Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。


查看完整回答
反对 回复 2019-01-04
  • 1 回答
  • 0 关注
  • 493 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信