Почему python по-разному интерпретирует шестнадцатеричные строки?

Недавно мне пришлось что-то делать с символами, написанными с xAB escape-синтаксиса xAB , и я заметил, что для разных символов существует разное поведение:

>>>'x61'
'a'
>>>'x10'
'x10'
>>>print('x61')
a
>>>print('x10')


Мой вопрос: почему >>> 'x10' не уступает ' ' ?

Всего 1 ответ


Они интерпретируются одинаково. Разница заключается в представлении, определенном str.__repr__ , который предпочитает использовать печатные символы ASCII, где это возможно.

print(x) использует x.__str__ , а не x.__repr__ , который просто возвращает саму строку, а затем записывает эту строку в терминал, после чего он до терминала, а не Python, чтобы решить, как отображать результат ,

x10 , в частности, указывает управляющий символ DLE (Data Link Escape), который не имеет какого-либо особого значения для терминала, поэтому обычно он не отображается или, в некоторых случаях, отображается с каким-то общим заполнителем, например ? ,


Есть идеи?

10000