python,是什么原因:a = r' \\' >>> repr(a)"' \\\\\\\\'"

时间:2014-09-17 03:23:51

标签: python

我有一些关于理解原始字符串和repr()的问题。 所以我在shell中尝试了这个:

a=r'\\'
>>> len(a)
2
>>> str(a)
'\\\\'
>>> repr(a)
"'\\\\\\\\'"

我理解r,反​​斜杠被视为文字。但是,repr(a)来的原因是什么?' \\\\#'"结果呢?

3 个答案:

答案 0 :(得分:2)

您正在查看交互式解释器中的repr结果,该结果会打印出repr的结果。因此,您会看到repr(repr(a)),其中包含八个反斜杠。

答案 1 :(得分:1)

r'\\'是一个由\\组成的双字符字符串。 repr()将其表示为Python字符串文字。由于反斜杠在字符串文字中启动转义序列,因此它们本身需要进行转义以准确再现原始字符串,因此repr()返回'\\\\' - 由六个字符组成的字符串。最后,当显示这个字符串时,Python交互式shell本身使用repr(),它选择双引号以避免必须转义它试图表示的字符串中的',并再次转义每个反斜杠,导致你所看到的。

  • r'\\'\\
  • repr(r'\\')'\\\\'
  • repr(repr(r'\\'))"'\\\\\\\\'"

答案 2 :(得分:0)

字符串的repr是完全重现字符串所需的文字。由于\是文字中的转义字符,因此您需要将其加倍以在结果字符串中获取单个字符。

在不使用print的情况下键入表达式时,会自动获得repr。因此\加倍,即repr的{​​{1}}。