初始化set()作为函数的参数

时间:2016-11-28 12:46:20

标签: python python-3.x

我有一个递归函数,它接受一个新的set()作为参数。这是功能:

def attributes(node, set):
    set.add(node.tag)
    if not node.istext():
        for n in node.content:
            set = set.intersection(attributes(node, set()))
    return set

但是我收到了这个错误:

error -> TypeError
'set' object is not callable

2 个答案:

答案 0 :(得分:5)

您使用本地参数覆盖全局内置set。只需将其更改为

即可
def attributes(node, my_set):
    ...

答案 1 :(得分:0)

问题是您使用的是Python本身保留的数据类型(集合),您不应将其用作变量名称,因此请更改名称:

def attributes(node, the_set):
    the_set.add(node.tag)
    if not node.istext():
        for n in node.content:
            the_set = the_set.intersection(attributes(n, set()))
    return the_set