Есть ли какой-нибудь простой способ получить согласованные результаты как в Python 2, так и в Python 3 для операции, например "дать мне N-й байт в строке байтов"? Подойдёт либо байт-как-целое число, так и байт-как-символ, если это будет согласованно.
Т.е. при
s = b"123"
Наивный подход дает:
s[1] # => Python 2: '2', <type 'str'>
s[1] # => Python 3: 50, <class 'int'>
Обтекание, которое в ord(...)
приводит к ошибке в Python 3:
ord(s[1]) # => Python 2: 50, <type 'int'>
ord(s[1]) # => Python 3: TypeError: ord() expected string of length 1, but int found
Я могу придумать довольно сложное совместное решение:
ord(s[1]) if (type(s[1]) == type("str")) else s[1] # 50 in both Python 2 and 3
... но может быть, есть более простой способ, который я просто не замечаю?