Python - 如何在没有全局变量的情况下递归写入

Jua*_*ano 1 python recursion

我正在编写一个递归函数来编写树的子类别.我不想使用全局var,在recurse方法上写入文件的最佳方法是什么?

def recurse(i):
    Xmlfile = file("index.html", "w")
    if i < 5:
        Xmlfile.write(str(i))
        recurse(i+1)
    return(None)

def main():
    Xmlfile = file("index.html", "w")
    Xmlfile.write("I")
    recurse(3)
    Xmlfile.write("O")
Run Code Online (Sandbox Code Playgroud)

预期的输出应该是这样的:I 3 4 5 O,但我只是得到了我.

Tig*_*kT3 7

把它作为一个论点.您执行此操作的方式将在每次迭代时重新打开并截断文件.

def recurse(f, i):
    if i < 5:
        f.write(str(i))
        recurse(f, i+1)

def main():
    with open("index.html", "w") as xmlfile:
        xmlfile.write("I")
        recurse(xmlfile, 3)
        xmlfile.write("O")
Run Code Online (Sandbox Code Playgroud)

请注意,我已file()使用推荐替换open(),并添加了上下文管理器以确保文件关闭.