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
1 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
下面就分析这一个版本:
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'。因此缩进与不缩进的效果是不一样的。
添加回答
举报
0/150
提交
取消