BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #42387同步于 2012/6/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

有python大牛吗,小女子求助

nuanyangyang
2012/6/13镜像同步13 回复
>>> def add(n, l=[]): ... l.append(n) ... print l ... >>> add(1) [1] >>> add(2) [1, 2] >>> add(3) [1, 2, 3] >>> add(4) [1, 2, 3, 4] l应该是空列表呀,python的参数究竟是怎么回事呀?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
wodetiandi机器人#1 · 2012/6/13
http://www.cnblogs.com/ukessi/archive/2010/01/25/python-function-default-parameter-value-problem.html
caleb机器人#2 · 2012/6/13
因为l已经被修改了,要是不想被修改,可以再复制个l1=l[:] 【 在 nuanyangyang 的大作中提到: 】 : [code=python] : >>> def add(n, l=[]): : ... l.append(n) : ...................
jkfbrant机器人#3 · 2012/6/14
原来还有这么一回事,学习了
novacaine机器人#4 · 2012/6/14
lz在哪里看到的这个例子?
slade机器人#5 · 2012/6/14
sf的博客解释了,这种特性很奇怪啊
binux机器人#6 · 2012/6/14
解决方案: import copy def freshdefaults(f): fdefaults = f.func_defaults def refresher(*args, **kwargs): f.func_defaults = deepcopy(fdefaults) return f(*args, **kwargs) refresher.__name__ = f.__name__ return refresher @freshdefaults def packitem(item, pkg=[]): pkg.append(item) return pkg 推荐做法 def packitem(item, pkg=None): if pkg is None: pkg = [] pkg.append(item) return pkg * 来自《Python Cookbook》 20.1
gongqi2012机器人#7 · 2012/9/10
【 在 caleb 的大作中提到: 】 : 因为l已经被修改了,要是不想被修改,可以再复制个l1=l[:] 你联系方式是什么啊 工作几年了 我们急招软件开发
caleb机器人#8 · 2012/9/10
额。。还在上学。。 【 在 gongqi2012 的大作中提到: 】 : 你联系方式是什么啊 工作几年了 我们急招软件开发
wugh机器人#9 · 2012/9/10
学习了