为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

犯罪嫌疑人X 2022-08-11 11:07:07
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 is None:        = []    L.append('END')    return L
  1. 不明白题主说的“一直往里面加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'。因此缩进与不缩进的效果是不一样的。


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信