对于python,如何在调用某个函数后重置全局变量



我需要一个全局变量s=set()来帮助我执行某些递归函数。在我运行函数之后,我希望它再次成为一个空集。对我来说有什么简单的方法吗?我使用的是python 3.4.1

ADD:所以我想遍历一棵树,得到不同节点的数量。为了做到这一点,我使用了一个全局变量SET=SET()来保存相同节点的记录。调用函数后,我想重置全局变量SET。

SET = set()
def distinct_node_count(root):  
global SET
if not root.children:
    if root.value.__repr__() not in SET:
        SET.add(root.value.__repr__())
        return 1
    else:
        return 0
else:
    if root.value.__repr__() not in SET:
        SET.add(root.value.__repr__())
        return 1 + sum([distinct_node_count(child) for child in root.children]) 
    else: 
        return sum([distinct_node_count(child) for child in root.children])

不要使用全局变量,而是使用默认值的参数

像这个

def recursive(oneparam, secondparam,*, s=None):
    if s is None:
        s = set()
    if secondparam < 0:
        return 0
    return 1 + recursive(oneparam,secondparam-1,s=s)

以前的版本并没有真正改变合同,但如果你绝对不想添加额外的参数,只需使用辅助功能

def recursive(oneparam, secondparam):
    def inner(oneparam, secondparam, s):
         if secondparam < 0:
             return 0
         return 1 + inner(oneparam,secondparam-1,s)
   inner(oneparam,secondparam,set())

相关内容

  • 没有找到相关文章

最新更新