[英]How does bytes.__repr__ representation work?
bytes
是整數的不可變序列,范圍為0 <= x <256。
bytes.__repr__
如何工作?
為什么有時使用\\x
轉義,而有時卻不使用? 例如bytes([118, 255])
b'v\\xff'
bytes([118, 255])
顯示為b'v\\xff'
,只有一個\\x
。 我知道\\x
用於傳達超出ascii范圍的值? 這里還有其他事嗎?
我正在尋找有關其工作原理的深入解釋? 甚至可以為我提供這些功能的CPython源代碼。
謝謝
感興趣的代碼似乎是這樣的 :
if (c == quote || c == '\\')
*p++ = '\\', *p++ = c;
else if (c == '\t')
*p++ = '\\', *p++ = 't';
else if (c == '\n')
*p++ = '\\', *p++ = 'n';
else if (c == '\r')
*p++ = '\\', *p++ = 'r';
else if (c < ' ' || c >= 0x7f) {
*p++ = '\\';
*p++ = 'x';
*p++ = Py_hexdigits[(c & 0xf0) >> 4];
*p++ = Py_hexdigits[c & 0xf];
}
else
*p++ = c;
如果c < ' ' || c >= 0x7f
c < ' ' || c >= 0x7f
,使用帶有\\x
的轉義序列。 ( 0x7f
是127,順便說一句)。 ASCII表上' '
之前' '
所有字符都是特殊字符。 參見http://www.asciitable.com/ 。 repr
將使第一列中的所有內容都轉義。 請注意,反斜杠,引號,換行符,回車符和制表符被視為特殊情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.