Вот мой ответ для поддержки как Python 2, так и Python 3 вместе с этими требованиями:
- Написано в коде Py3 с минимальным кодом сравнения Py2.
- Позже удалите код сравнения Py2без сбоев.Т.е. стремиться только к удалению, без изменений в коде Py3.
- Избегать использования
six
или аналогичного модуля Compat, так как они имеют тенденцию скрывать то, что пытаются достичь. - Перспектива дляПотенциал Py4.
import sys
PY2 = sys.version_info.major == 2
# Check if string (lenient for byte-strings on Py2):
isinstance('abc', basestring if PY2 else str)
# Check if strictly a string (unicode-string):
isinstance('abc', unicode if PY2 else str)
# Check if either string (unicode-string) or byte-string:
isinstance('abc', basestring if PY2 else (str, bytes))
# Check for byte-string (Py3 and Py2.7):
isinstance('abc', bytes)