我一直在学习 Zed 的 LPTHW,在完成第 10 课后我一直在使用转义字符。在使用 %r 时我遇到了这个,我不知道为什么会这样(我太新了任何形式的编程/编码都会受到伤害):
test = "10'5\""
test_2 = '10\'5"'
print "%r" % test
print "%r" % test_2
当我运行它时,我得到:
'10\'5"'
'10\'5"'
我很困惑。我原以为我会得到以下输出:
"10'5\"'
'10\'5"'
我的理解是 %r 会返回与其写入方式相同的字符串,但它似乎通过将\向左移动将其转换为 test_2。
我是不是漏掉了什么?
谢谢。
请您参考如下方法:
It was my understanding that %r would return the string identical to how it is written
你的理解有误。 Python 不“记住”字符串在源代码中是如何编写的;对解释器来说重要的是它包含字符:
10'5"
打印该字符串的 repr 将使用 Python 认为最适合其内容的引号类型。由于这两个字符串包含相同的字符,它们由 repr 打印(因此,由 %r 格式字符串打印)。
