Python函数调用结果不符预期:为何输出不是2 4而是2 5?
为啥你的Python函数输出和预期不一样?
嘿,我来帮你把这个问题掰明白!先把你的代码放出来,咱们对着看:
def one_good_turn(n): return n + 1 def deserves_another(n): return one_good_turn(n) + 2 print(one_good_turn(1)) # 输出2,没问题 print(deserves_another(2)) # 你以为会输出4,结果却是5
问题出在函数的执行顺序上!
咱们手动走一遍deserves_another(2)的运行流程:
- 你给这个函数传了2,它第一步会调用
one_good_turn(2)——这个函数的作用是把输入加1,所以这里算出2+1=3; - 然后它会把这个结果再加2,也就是
3+2=5,这就是你看到的实际输出啦。
你预期得到4,应该是误以为deserves_another只是给n直接加2?但实际上它的逻辑是先让n经过one_good_turn加1,再额外加2,相当于最终是n+1+2 = n+3。传2的话就是2+3=5,这完全是代码的正确执行结果哦。
如果确实想要得到4的话,你得调整deserves_another的逻辑,比如改成下面这样(取决于你实际想实现的功能):
# 如果你想让one_good_turn之后只加1 def deserves_another(n): return one_good_turn(n) + 1 # 传2的话是3+1=4,符合你的预期 # 或者直接给n加2 def deserves_another(n): return n + 2 # 传2的话就是4
总之,当前代码的输出5是完全符合逻辑的,只是你对函数的计算流程预期错了而已~
内容的提问来源于stack exchange,提问作者Bijay Gurung
相关产品推荐
相关产品推荐

