a = '\a'
>>> b = '\7'
>>> a == b
True
>>>
怎么可能a
和b
平等?有人可以给出原因吗?
\a
是控制字符 BEL 的转义字符序列(a 表示警报)。字符的 ASCII 码也恰好是 7,与转义序列中的八进制\7
值相匹配。
参考:
http://en.wikipedia.org/wiki/Bell_character
http://docs.python.org/reference/lexical_analysis.html#string-literals
它们是相等的,因为\a
表示 Python 中的 ASCII 贝尔字符。查看ASCII 表,该字符的值为 7。
ord('\a')
7
ord('\7')
7
因此两者相等。
此ASCII 表将显示\a
(BEL) 具有八进制字符代码 7
同样,但也许现在并不那么令人惊讶,
a = ('\t')
b = ('\11') # octal character code for tab
a == b
True
如果您查阅 ASCII 表。
事实证明\a
并\7
具有相同的值:
>>> a = '\a'
>>> b = '\7'
>>> a
'\x07'
>>> b
'\x07'
\a
是 ASCII贝尔 (BEL) 字符( source ),它在 ASCII 表 ( ASCII 表)中确实具有值 7 。