已有184人关注
可变对象作为函数参数的默认值,多次调用会出现意外??很不理解啊
还有0人有此问题
发表在Python图书答疑 2019-04-05 《Python从入门到项目实践》
是否精华
版块置顶:

感觉很不理解啊,明明是我们自己吧可变对象追加的元素值,为什么说是多次调用会导致意外呢?你没有append(1)函数还能用这个意外了吗?

def demo(obj=[]):

    print('obj的值',obj)

    obj.append(1)

demo()

demo()

demo()

分享到:
精彩评论 2
andy
学分:2118 LV10
TA的每日心情
继续努力
2017-02-06 23:42:34
2019-04-08
沙发

读者你好:

    避免使用可变对象作为函数参数。上面的例子效果不太明显,看下面的例子:

def foo(x,items=[]):

    items.append(x)

    return items


foo(1) # 返回[1]

foo(2) # 返回[1,2]

foo(3) # 返回[1,2,3]    

foo(1) # 返回[1,2,3,1]

lq7537
学分:78 LV3
2019-04-13
板凳
老师你好,这个异常不是说,在不传递参数的情况下吗!
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照