You need to enable JavaScript to run this app. Python递归函数do_n无法将传入的目标函数调用指定n次问题
优惠活动
大模型
产品
解决方案
定价
更多

Python递归函数do_n无法将传入的目标函数调用指定n次问题

问题原因分析

你所说的「网上查到的正确写法和你的代码一致」属于误判,你的代码存在两处核心逻辑错误:

  • 传入do_n的第一个参数不是函数对象。你写的print_once('Bob')会立即执行该函数,将返回值None传递给func参数,而非传递print_once函数本身,因此do_n内部根本无法调用目标函数。
  • do_n函数内部逻辑错误。你硬编码调用了print_once(s),既没有使用传入的func参数,也没有定义变量s,运行时还会触发变量未定义的报错。
修正方案

如果要让do_n支持调用带参数的任意函数,可以通过可变参数接收目标函数的入参,修正后的代码如下:

def print_once(s):
    print(s)
    
def do_n(func, n, *args, **kwargs):
    if n <= 0:
        return
    # 调用传入的函数对象,透传参数
    func(*args, **kwargs)
    do_n(func, n - 1, *args, **kwargs)

# 调用时第一个参数传函数对象(不加括号),后续依次传调用次数、函数入参
do_n(print_once, 3, 'Bob')

运行上述代码会连续打印3次Bob,符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 14:45:00