В чем разница между getiterator () и iter () по сравнению с lxml - PullRequest
4 голосов
/ 19 июня 2010

Как говорится в вопросе, какая разница между:

x.getiterator() и x.iter(), где x - это ElementTree или Element? Потому что, кажется, работает на обоих, я попробовал.

Если я где-то ошибаюсь, поправьте меня, пожалуйста.

Ответы [ 2 ]

6 голосов
/ 13 августа 2010

Документация Python для ElementTree утверждает, что метод getiterator() устарел, начиная с версии 2.7, и говорит, что следует использовать Element.iter().В документации lxml API говорится то же самое, но также упоминается, что реализация getiterator() в lxml отличается от исходного поведения ElementTree.

Интересно, что в документации также говорится: «Если вы хотите эффективный итератор, используйте вместо него метод tree.iter ()».Обратите внимание на слово «эффективный», которое заставляет меня поверить, что в реализации между getiterator() и iter() наверняка есть разница, но без проверки источника я не могу быть уверен на 100%.

Так или иначе, если что-то устарело, ясно, что они не хотят, чтобы вы это использовали.

0 голосов
/ 20 июня 2010

getiterator - это стандартное написание ElementTree для этого метода; iter - это эквивалентный lxml -только метод, который не позволит вашему коду работать в ElementTree, если он вам нужен, и, по-видимому, не имеет никаких искупительных качеств, за исключением того, что вы не набираете еще 7 символов для имени метода; ).

...