Я пытаюсь получить первый символ байт-строку в Python 3.4, но когда я индексировать его, я получаю int
:Почему я получаю int при индексировании байтов?
>>> my_bytes = b'just a byte string'
b'just a byte string'
>>> my_bytes[0]
106
>>> type(my_bytes[0])
<class 'int'>
Это кажется неинтуитивным мне, как я ожидал получить b'j'
.
Я обнаружил, что могу получить ценность, которую я ожидаю, но для меня это похоже на хак.
>>> my_bytes[0:1]
b'j'
Может кто-нибудь объяснить, почему это происходит?
Не уверен, почему я заслужил нисходящий и заочный за это. Может кто-нибудь объяснить, как можно улучшить этот вопрос? – meshy
Я не голосовал; Я думаю, кто-то чувствовал, что это очевидно для них, и в документации говорится, что это происходит для типа. Закрытие голосования вне базы (* Непонятно *? Это совершенно ясный вопрос для меня). –
Хак с использованием диапазона, например 'my_bytes [0: 1]' действительно помог мне написать Python2/Python3 совместимый код. Мне бы хотелось увидеть ответ, который охватывает наилучшую практику для совместимого кода для решения этой проблемы. Например: 'ord (my_bytes [0])' дает int в Python2, но 'my_bytes [0]' дает int в Python3. Чтобы работать в обоих, я использую 'ord (my_bytes [0: 1])', который кажется действительно уродливым для Python3. – proximous