163
社区成员
发帖
与我相关
我的任务
分享
def func(list_=[], i=0):
i += 1
list_.append(i)
if i == 5:
return list_
return func(list_=list_, i=i)
out = func()
print(out)
out1 = func()
print(out1)
输出:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
如果加入一段
def func(list_=[], i=0):
if i == 0:
list_ = []
i += 1
list_.append(i)
if i == 5:
return list_
return func(list_=list_, i=i)
out = func()
print(out)
out1 = func()
print(out1)
就正常了:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
为什么会这样呢?
按照我的理解,在程序的第一行就已经对 list_这个列表清空了啊,为什么还要再做一次?
1、因为你两次调用func函数时,都未对list_进行传值
2、list_参数未传,而初始值又只会被初始化一次,因此第一次调用时,list_=[];第二次调用时,list_=[1,2,3,4,5]
要解决这个问题不要加i==0的判断,只需要改成:out1 = func([])
很不错的内容,干货满满,已支持师傅,期望师傅能输出更多干货,并强烈给师傅文章点赞
另外,如果可以的话,期待师傅能给正在参加年度博客之星评选的我一个五星好评,您的五星好评都是对我的支持与鼓励:https://bbs.csdn.net/topics/611387568
点赞五星好评回馈小福利:抽奖赠书 | 总价值200元,书由君自行挑选(从此页面参与抽奖的同学,只需五星好评后,参与抽奖)