Tôi biết một chút về mái vòm, và muốn tìm hiểu về ElementTree. Python 2.6 có triển khai ElementTree hơi cũ nhưng vẫn có thể sử dụng được. Tuy nhiên, có vẻ như nó đi kèm với hai lớp khác nhau: xml.etree.ElementTree và xml.etree.cElementTree. Có ai đó vui lòng tỏ ra tử tế với tôi bằng sự khác biệt của họ không? Cảm ơn bạn.Sự khác nhau giữa cElementtree và ElementTree là gì?
Trả lời
Đó là cùng một thư viện (giống API, tính năng tương tự) nhưng ElementTree được thực hiện trong Python và cElementTree được triển khai tại C.
Nếu bạn có thể, hãy sử dụng triển khai C vì nó được tối ưu hóa để phân tích nhanh và sử dụng bộ nhớ thấp và nhanh hơn 15-20 lần so với triển khai Python.
Sử dụng phiên bản Python nếu bạn đang ở trong một môi trường giới hạn (không cho phép tải thư viện C).
Có một số khác biệt tinh tế. Trong cElementTree, phương thức 'findtext' không có tham số' default' (xem bằng Python 2.7.13). Tuy nhiên, điều này có thể dễ dàng được thay thế bằng 'findtext (" ... ") hoặc" defaultValue "'. –
Từ http://effbot.org/zone/celementtree.htm:
Module cElementTree là một việc thực hiện C của API ElementTree, tối ưu hóa cho phân tích nhanh chóng và sử dụng bộ nhớ thấp. Trên các tài liệu điển hình, cElementTree là nhanh hơn so với phiên bản Python của ElementTree 15-20 lần, và sử dụng ít bộ nhớ 2-5 lần
ElementTree được triển khai trong python trong khi cElementTree được triển khai trong C. Vì vậy cElementTree sẽ nhanh hơn, nhưng cũng không khả dụng ở nơi bạn không có quyền truy cập C, chẳng hạn như trong Jython hoặc IronPython hoặc trên Google App Engine.
Có chức năng, chúng phải tương đương nhau.
Tham khảo: http://docs.python.org/library/xml.etree.elementtree.html. "Việc triển khai C của API này có sẵn dưới dạng xml.etree.cElementTree. " –
- 1. Sự khác nhau giữa WPF và WinForms là gì?
- 2. Sự khác nhau giữa JavaScript và Java là gì?
- 3. Sự khác nhau giữa ODBC và OleDB là gì?
- 4. Sự khác nhau giữa SGML và XML là gì?
- 5. Sự khác nhau giữa DefaultSelenium và RemoteWebDriver là gì?
- 6. Sự khác nhau giữa RMI và Corba là gì?
- 7. Sự khác nhau giữa scgi và wsgi là gì?
- 8. Sự khác nhau giữa wsHttpBinding và ws2007HttpBinding là gì?
- 9. Sự khác nhau giữa Pingback và Trackback là gì?
- 10. Trong Python, sự khác nhau giữa ".append()" và "+ = []" là gì?
- 11. Sự khác nhau giữa AxInterop và Interop là gì?
- 12. Sự khác nhau giữa CellClick và CellMouseClick là gì?
- 13. Sự khác nhau giữa .bashrc, .bash_profile và .environment là gì?
- 14. Sự khác nhau giữa JSP và Facelets là gì?
- 15. Sự khác nhau giữa hg quên và hg là gì?
- 16. Sự khác nhau giữa GDI và GDI + là gì?
- 17. Sự khác nhau giữa đá quý và plugin là gì?
- 18. Sự khác nhau giữa metaClass.methods và metaClass.metaMethods là gì?
- 19. Sự khác nhau giữa kEND và $ end là gì?
- 20. Sự khác nhau giữa java và jsp là gì?
- 21. Sự khác nhau giữa Application.Run() và Form.ShowDialog() là gì?
- 22. Sự khác nhau giữa -0 và 0 là gì?
- 23. Sự khác nhau giữa HTTP 1.0 và 1.1 là gì?
- 24. Sự khác nhau giữa java.lang.Math và java.lang.StrictMath là gì?
- 25. Sự khác nhau giữa " " và "" là gì?
- 26. Sự khác nhau giữa Spring BeanFactoryAware và ApplicationContextAware là gì?
- 27. sự khác nhau giữa SCRIPT_FILENAME và SCRIPT_NAME là gì?
- 28. Sự khác nhau giữa JSP và JSTL là gì?
- 29. Sự khác nhau giữa JSF và Facelets là gì?
- 30. Sự khác nhau giữa javax.inject.Inject và com.google.inject.Inject là gì?
Là một sang một bên, bạn có thể tìm thấy lxml.etree thú vị; trong khi một mô-đun bên thứ ba, đây là một phần mở rộng của đặc tả ElementTree và bao gồm các tính năng hữu ích như hỗ trợ XPath thực. –