5
a = '\a'
>>> b = '\7'
>>> a == b
True
>>> 

怎么可能ab平等?有人可以给出原因吗?

4

4 回答 4

9

\a是控制字符 BEL 的转义字符序列(a 表示警报)。字符的 ASCII 码也恰好是 7,与转义序列中的八进制\7值相匹配。

参考:

http://en.wikipedia.org/wiki/Bell_character

http://docs.python.org/reference/lexical_analysis.html#string-literals

于 2012-06-09T12:41:35.150 回答
3

它们是相等的,因为\a表示 Python 中的 ASCII 贝尔字符。查看ASCII 表,该字符的值为 7。

于 2012-06-09T12:41:46.850 回答
2
ord('\a')
7

ord('\7')
7

因此两者相等。

ASCII 表将显示\a(BEL) 具有八进制字符代码 7

同样,但也许现在并不那么令人惊讶,

a = ('\t')
b = ('\11')  # octal character code for tab

a == b
True

如果您查阅 ASCII 表。

于 2012-06-09T12:40:49.160 回答
2

事实证明\a\7具有相同的值:

>>> a = '\a'
>>> b = '\7'
>>> a
'\x07'
>>> b
'\x07'

\a是 ASCII贝尔 (BEL) 字符( source ),它在 ASCII 表 ( ASCII 表)中确实具有值 7 。

于 2012-06-09T12:41:45.147 回答