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

自定义map函数递归执行流程困惑:调试跳转逻辑不解

递归函数执行流程与解包运算符疑问

我正在学习递归(原本误以为是尾递归,实际并非),搞不懂下面示例的执行流程。用VSCode调试器时,程序执行到return [f(arg), *result]这一行时,会跳转到result = my_map(f, rest)行,而且arg变成了2,完全不明白为什么。

代码示例

def my_map(f, iterable):
    try:
        arg, *rest = iterable
    except ValueError:
        return []
    result = my_map(f, rest)
    return [f(arg), *result]

print(my_map(lambda x: x+10, [1,2,3]))

疑问补充

  • 我对解包运算符*不太熟悉,可能因此漏掉了关键信息。当arg为3、result是[]时,我本来以为会返回类似[3, []]的列表,但实际不是这样。
  • 我能理解result变成空列表之前的所有流程,但执行return [f(arg), *result]时,调试器却回到上一行(result赋值那行),希望有人解释这之后的执行过程。

内容的提问来源于stack exchange,提问作者EstherPM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:56:03