为什么xml.etree.ElementTree的Element实例布尔判断结果为False?
原因解释
xml.etree.ElementTree 中 Element 类的布尔求值逻辑为:仅当元素包含至少一个子元素时返回True,否则返回False,和元素本身是否为合法创建的实例无关。
你创建的 <foo> 标签属于无子元素的空元素,因此布尔求值结果为False,不会进入if分支执行打印逻辑。
正确判断写法
如果要校验变量是否为合法的非空Element实例,不要直接用布尔判断,改用如下写法:
if elt is not None: print('bar')
验证示例
当你给元素添加子元素后,布尔判断就会返回True:
import xml.etree.ElementTree as ET elt = ET.Element('foo') # 添加子元素 ET.SubElement(elt, 'child') if elt: print('bar') # 此时会正常输出bar
内容的提问来源于stack exchange,提问作者arne
相关产品推荐
相关产品推荐

