为何变量myNum指向2而非8?Python函数return语句问题咨询
问题分析与解答
先看你的代码:
def countby2(aNum): count = 0 for i in range(aNum): count += 2 return count # 问题核心所在 return count myNum = countby2(4)
关键原因:return的位置错误
- 当
return count写在for循环内部时,函数会在第一次循环迭代时就触发return,直接终止函数并返回当前的count值(也就是2),后面的3次循环迭代根本没机会执行。 - 换成
print时,函数不会提前终止,循环会完整执行4次:每次count +=2后打印数值,最后count确实会变成8,但此时函数没有return语句,所以myNum实际是None——你看到的8是打印输出的结果,并非myNum的值,这点可能你之前误解了。
修正方案
把return count移到for循环外面,让循环执行完所有迭代后,再返回最终的累计值:
def countby2(aNum): count = 0 for i in range(aNum): count += 2 return count # 移至循环外部 myNum = countby2(4) print(myNum) # 此时会输出预期的8
内容的提问来源于stack exchange,提问作者Prasun Banerjee
相关产品推荐
相关产品推荐

