2017-02-08 9 views
3

Я пишу кросс-совместимый код Python 2 и 3 с некоторой помощью из этого cheatsheet. Я заметил, что есть разные пакеты и модули, которые помогают это сделать: пакет future (например, future.utils и т. Д.), Пакет six и встроенный модуль __future__.Написание кросс-совместимого Python 2/3: Разница между __future__, six и future.utils?

Существуют ли какие-либо отличия при использовании этих пакетов? Должен ли я смешивать и сопоставлять их, или можно ли написать полностью кросс-совместимый код, написанный только одним из них?

ответ

4

С точки зрения питона 2-3 совместимости:

__future__ - это встроенный модуль в питона, который позволяет использовать дополнительные возможности в версии питона, где они являются дополнительными (по сравнению с обязательным). Например, unicode_literals был необязательным в python2.7, но стал обязательным в python3.0.

six - в основном переименовывает модули/функции, чтобы обеспечить более высокую совместимость между python2 и python3, но фактически не поддерживает функции backport (или forward-port). Он также поддерживается для версий python >=2.4.

future - более современный, поддерживает только python>=2.6,>=3.3 и обладает более богатыми возможностями.

Похоже, что there is some agreementfuture предпочтителен six, если вы можете отказаться от поддержки старых версий python.

 Смежные вопросы

  • Нет связанных вопросов^_^