Python:跨函数共享变量

Python:跨函数共享变量,python,xml,sax,Python,Xml,Sax,我是python新手。我想让这部分变量在函数间共享 publist = [] publication = {"pubid" : 1, "title" : 2, "year" : 3, "pubtype" : 4, "pubkey" :5} article = False book = False inproceeding = False incollection = False pubidCounter = 0 我应该把变量

我是python新手。我想让这部分变量在函数间共享

     publist = []
     publication = {"pubid" : 1, "title" : 2, "year" : 3, "pubtype" : 4, "pubkey" :5}
     article = False
     book = False
     inproceeding = False
     incollection = False
     pubidCounter = 0
我应该把变量放在哪里。我试着按如下所示放置它,但它说indendation有一个错误。但是,将它们放在外部也会返回缩进错误

import xml.sax


class ABContentHandler(xml.sax.ContentHandler):
     publist = []
     publication = {"pubid" : 1, "title" : 2, "year" : 3, "pubtype" : 4, "pubkey" :5}
     article = False
     book = False
     inproceeding = False
     incollection = False
     pubidCounter = 0

    def __init__(self):
        xml.sax.ContentHandler.__init__(self)

    def startElement(self, name, attrs):

        if name == "incollection":
            incollection = true
            publication["pubkey"] = attrs.getValue("pubkey")
            pubidCounter += 1

        if(name == "title" and incollection):
            publication["pubtype"] = "incollection"



    def endElement(self, name):
        if name == "incollection":

            publication["pubid"] = pubidCounter
            publist.add(publication)
            incollection = False

    #def characters(self, content):


def main(sourceFileName):
    source = open(sourceFileName)
    xml.sax.parse(source, ABContentHandler())


if __name__ == "__main__":
    main("dblp.xml")

当这样放置它们时,您将它们定义为类的本地,因此需要通过
self

e、 g


如果您希望它们是全局的,那么在放置它们时,您应该在类之外定义它们,就像将它们定义为类的本地一样,因此您需要通过
self

e、 g


如果您希望它们是全局的,那么应该在类之外定义它们

当您在类定义中放置变量时,可以通过以下方式引用这些变量:
self.incollection
(self是类实例)。如果不这样做(只需按名称引用这些变量,如
incollection
),Python将尝试在全局范围内查找这些变量。因此,您可以将它们定义为全局变量,并在引用这些变量之前使用global关键字:

global incollection
incollection = true

在类定义中放置变量时,可以这样引用这些变量:
self.incollection
(self是类实例)。如果不这样做(只需按名称引用这些变量,如
incollection
),Python将尝试在全局范围内查找这些变量。因此,您可以将它们定义为全局变量,并在引用这些变量之前使用global关键字:

global incollection
incollection = true