Skip to main content
 首页 » 编程设计

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

2025年05月04日11sharpest

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

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") 

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

请您参考如下方法:

将其作为参数传递。您这样做的方式将在每次迭代时重新打开并截断文件。

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") 

请注意,我已将 file() 替换为推荐的 open(),并添加了上下文管理器以确保文件被关闭。