返回信息流def listAppend(element, list = []):
list.append(element)
print list
if "__main__" == __name__:
listAppend(1)
listAppend(2)
listAppend(3)
我觉得输出结果应该是:
[1]
[2]
[3]
但为什么不对
这是一条镜像帖。来源:北邮人论坛 / python / #8580同步于 2015/9/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
求问一个白痴的问题,为什么结果不对
acde
2015/9/17镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 acde 的大作中提到: 】
: def listAppend(element, list = []):
: list.append(element)
: print list
: ...................
list引用了一个内存空间,list=[]并不能在每次执行函数时得到清空
相当于
listA=[]
def listAppend(element, list = listA):
list.append(element)
print list
if "__main__" == __name__:
listAppend(1)
listAppend(2)
listAppend(3)
nnd,我还没说完呢。
listAppend函数被调用时,python会事先在模块内生产一个list成员。
所以每次调用都是将外部变量的list增加一个内容。
你的list如果在函数内声明,那么他的作用域只会发生在函数内,这样就解决了。