永发信息网

廖雪峰的python教程有一点地方没看明白,求指导

答案:2  悬赏:40  手机版
解决时间 2021-02-26 08:38
  • 提问者网友:杀手的诗
  • 2021-02-25 17:45
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L

为什么当那个None是[ ]时就会一直往里面加END,而用None就不会

我觉得return的L是全局变量,而传入的参数L是局部变量,为什么会累加?

def add_end(L=None):
if L is None:
L = []
L.append('END')#为什么这一句缩不缩进结果都一样?我觉得应该缩进
return L
最佳答案
  • 五星知识达人网友:走死在岁月里
  • 2021-02-25 19:02
题主贴了两遍函数,似乎是一样的,下面就分析这一个版本:
def add_end(L=None):
    if L is None:
        L = []
    L.append('END')
    return L1. 不明白题主说的“一直往里面加END”是怎么回事。函数里既没有循环也没有递归,怎么会“一直”加。。。
2. 关于默认参数,其作用是:使 add_end()的返回值 与 add_end(None)的返回值相同。因此下面不再单独分析输入0个参数的情形。
3. “return的L是全局变量,而传入的参数L是局部变量”这个说法很奇怪。当传入的L是None时,该函数的会新生成一个list,向其中加入一个字符串‘END’,并返回这个新生成的list。而当传入的L是一个list,哪怕是空list时,该函数的作用是向传入的这个L新加一个元素'END',并返回传入的那个L。
4. L.append('END')这一行,如果缩进的话:当函数传入的L不是None时,就不会向传入的这个L新加一个元素'END'。因此缩进与不缩进的效果是不一样的。
全部回答
  • 1楼网友:蕴藏春秋
  • 2021-02-25 19:51
这是他的网站地址:www.liaoxuefeng.com 这是python专栏(有python2.7,python3,可供选择):www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 基础学习的话,够用了,但没有太多的习题供练习,只是在每个章节的最后,会提出一些小问题,可以自己练习下,也可以留言请教。 其实主要还得靠自己多写,多练。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯