You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)的运行流程:

  1. 你给这个函数传了2,它第一步会调用one_good_turn(2)——这个函数的作用是把输入加1,所以这里算出2+1=3;
  2. 然后它会把这个结果再加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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:53:33