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

Python:递归生成目录树时嵌套目录的print_tree为何隐式为False?

问题原因分析

最可能的原因是你在递归处理嵌套目录时,调用generate方法没有显式传递print_tree参数,导致嵌套调用时使用了方法定义的默认值False。

举个典型的错误写法:

class TreeGenerator:
    def generate(self, print_tree=False):
        # 处理当前目录
        if print_tree:
            print(树形结构行)
        else:
            print("here")
        
        # 处理子目录时未传递print_tree参数
        for sub_dir in self.sub_dirs:
            sub_dir.generate()  # 这里默认用了print_tree=False

当你以print_tree=True调用顶层目录的generate时,顶层会走if分支,但处理子目录时调用generate()没有传参,就会用方法定义里的默认值False,所以子目录都会走else分支打印“here”。

解决方法很简单,递归调用时把当前的print_tree值传下去:

for sub_dir in self.sub_dirs:
    sub_dir.generate(print_tree=print_tree)

移除条件判断后,不管print_tree参数是什么,都会执行树形打印逻辑,所以嵌套目录也能正常输出完整树形。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:04:54