为什么下面这一句缩不缩进结果都一样?我觉得应该缩进?

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

犯罪嫌疑人X
浏览 74回答 1
1回答

慕工程0101907

下面就分析这一个版本:def add_end(L=None):    if L is None:        L = []    L.append('END')    return L不明白题主说的“一直往里面加END”是怎么回事。函数里既没有循环也没有递归,怎么会“一直”加。关于默认参数,其作用是:使 add_end()的返回值 与 add_end(None)的返回值相同。因此下面不再单独分析输入0个参数的情形。“return的L是全局变量,而传入的参数L是局部变量”这个说法很奇怪。当传入的L是None时,该函数的会新生成一个list,向其中加入一个字符串‘END’,并返回这个新生成的list。而当传入的L是一个list,哪怕是空list时,该函数的作用是向传入的这个L新加一个元素'END',并返回传入的那个L。L.append('END')这一行,如果缩进的话:当函数传入的L不是None时,就不会向传入的这个L新加一个元素'END'。因此缩进与不缩进的效果是不一样的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python