lxml中getiterator()和iter()有什么区别?

5 投票
2 回答
3026 浏览
提问于 2025-04-16 00:11

问题是这样的,x.getiterator()x.iter() 这两个有什么区别呢?这里的 x 是一个 ElementTree 或者一个 Element。因为我发现这两个方法似乎都能用,我试过了。

如果我哪里说错了,请指正我。

2 个回答

8

Python的ElementTree文档提到,从2.7版本开始,getiterator()这个方法已经不再推荐使用,建议用Element.iter()来代替。同时,lxml的API文档也说了同样的事情,但还提到lxml中getiterator()的实现和原来的ElementTree有些不同。

有趣的是,文档还提到“如果你想要一个高效的迭代器,应该使用tree.iter()方法”。这里的“高效”这个词让我觉得getiterator()iter()之间肯定有实现上的区别,不过我没有查看源代码,所以不能百分之百确认。

总之,如果某个东西被标记为不推荐使用,那就说明他们不希望你继续用它。

0

getiteratorElementTree 这个库里标准的写法;而 iter 是一个只在 lxml 这个库里用的方法。如果你在使用 ElementTree 的时候需要用到它,代码就会出问题。而且,除了让你少打7个字母之外,这个方法似乎没有任何值得推荐的优点;-)。

撰写回答