我正在解析xml数据,当我在条件中打印变量时,但当我稍后调用同一个变量时,没有定义。为什么会这样
这里的变量“LaunchPath”工作正常:
import xml.sax
class PathHandler( xml.sax.ContentHandler ):
def __init__(self):
self.CurrentData = ""
# Call when an element starts
def startElement(self, tag, attributes):
self.CurrentData = tag
if tag == "application":
LaunchApp = attributes["android:name"].replace(".", "/")
LaunchPath = LaunchApp + ".smali"
print LaunchPath
if ( __name__ == "__main__"):
# create an XMLReader
parser = xml.sax.make_parser()
# turn off namepsaces
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
# override the default ContextHandler
Handler = PathHandler()
parser.setContentHandler( Handler )
parser.parse("AndroidManifest.xml")
但当我试图在底部打印“LaunchPath”时,它不起作用:
import xml.sax
class PathHandler( xml.sax.ContentHandler ):
def __init__(self):
self.CurrentData = ""
# Call when an element starts
def startElement(self, tag, attributes):
self.CurrentData = tag
if tag == "application":
LaunchApp = attributes["android:name"].replace(".", "/")
LaunchPath = LaunchApp + ".smali"
if ( __name__ == "__main__"):
# create an XMLReader
parser = xml.sax.make_parser()
# turn off namepsaces
parser.setFeature(xml.sax.handler.feature_namespaces, 0)
# override the default ContextHandler
Handler = PathHandler()
parser.setContentHandler( Handler )
parser.parse("AndroidManifest.xml")
print LaunchPath
这给了我一个错误,即“LaunchPath”未定义
为什么会发生这种情况,我如何解决它
这是因为您的变量LaunchPath是在函数
startElement
的作用域内定义的,因为当函数返回时您在那里声明了它,它也“擦除”了变量你应该读一下python scopes
这是因为
LaunchPath
是一个局部变量,您试图将其引用到其范围之外相关问题 更多 >
编程相关推荐