【发布时间】:2020-05-07 19:59:54
【问题描述】:
我不知道何时使用return 函数。在下面的函数中,我的直觉是 return 语句应该在那里返回修改后的列表,但我的 TA 说这是多余的,我不太明白为什么。任何关于何时正确使用return 声明和常见做法的说明将不胜感激。
p = [2,0,1]
q = [-2,1,0,0,1,0,0,0]
p1 = [0,0,0,0]
#Without return statement
def drop_zeros1(p_list):
"""drops zeros at end of list"""
i = 0
while i < len(p_list):
if p_list[-1]==0:
p_list.pop(-1)
else:
break
#With return statement
def drop_zeros(p_list):
"""drops zeros at end of list"""
i = 0
while i < len(p_list):
if p_list[-1]==0:
p_list.pop(-1)
else:
return p_list
break
还有为什么在列表p1上使用时输出不一致,它只在应该删除所有零时才删除最后一个0?
非常感谢,
【问题讨论】:
-
一旦遇到非零值,这两个函数都会停止迭代。
-
如果你在上一行返回,第二次休息是没有意义的
-
这就是重点,所以当 p1 被传递给函数时,它应该返回一个空列表
-
列表也在函数范围内被修改,所以除非你想让函数实际输出一些东西,否则
return是多余的 -
惯例是改变一个参数并返回
None或返回一个新值,保持参数不变,而不是两者。