yeghub
yeghub
I experienced the same install error. Have you fixed it? how can it be fixed?
之前有位同学在issue中提了一个问题, 这个问题的序号是:#1310,问题名称是:列表、函数参数以及缺省值的问题 因为这个问题已被老师解决,关闭。直接在这个问题后面留言提问担心老师看不到,所以重新提交了新的issue 我的issue描述中#1310是个链接,点击这个链接能跳转到上述问题界面。 老师对这个问题的解释如下: >回到你的问题,你的代码中关键的是下面这个函数的写法很特殊: > >def append_list(lst=[]): > lst.append(1) > return lst >这个函数接受一个列表作为输入参数,对这个列表执行了改变内容的操作(没有对 lst 做重新赋值),又返回了这个参数本身。>然后你把这个返回值赋给了一个全局变量: > >lst_updated = append_list() >于是全局变量 lst_updated 和局部变量(参数) lst 就指向了同一个对象,而因为这个对象有全局变量在引用,它获得了全局变 >量的生命周期,也就是说,不会随着函数调用结束而销毁——于是它的内容就得到了延续。 提问者在函数中添加了打印语句,将lst和update的ID打印了出来,发现他们是相等的,从而验证了老师的解释。 我现在是将上述函数中的 return...
我理解的是 第一次调用lst.append(),改变了输入参数的内容,因为输入参数是局部变量,函数调用完毕,这个局部变量随之销毁; 第二次再调用lst.append(),应该是一个新的局部变量,和第一次调用lst.append()的变量之间应该是没有任何关系的; 第三次依次类推。。。 实际测试并非如此,我应该是把输入参数和局部变量弄混了,把lst这个参数当做局部变量了
感谢老师的解析! 我看文档中对三个参数的描述如下: Keyword Arguments: style (AbstractStyle) – Render Style. childiter – Child iterator. maxlevel – Limit rendering to this depth. childter被描述为child iterator,我误以为他是一个可迭代对象