为什么打印 returns \\,而不是 Python 中的转义字符 \

Why print returns \\, not a escape character \ in Python

下面的代码打印出这样的表情符号:

print('\U0001F602')
print('{}'.format('\U0001F602'))

但是,如果我像下面这样使用 \,它会打印 \U0001F602

print('\{}'.format('U0001F602'))

为什么 print('\{}'.format()) 返回 \,而不是 escape 字符,即 \?

我一直在检查 this 并在 Google 中搜索,但找不到正确的答案。

>>> print('\{}'.format('U0001F602'))
\U0001F602

这是因为您将 {} 作为 .format 函数的参数,它只填充花括号内的值。

而且它打印的是单张\而不是双张\

参考String and Bytes literals,当python在编译程序时看到字符串文字中的反斜杠时,它会查看下一个字符以查看如何转义后面的字符。在第一种情况下,后面的字符是 U 所以 python 知道它是一个 unicode 转义字符。在最后一种情况下,它看到 {,意识到没有转义,只发出反斜杠和 { 字符。

print('\{}'.format('U0001F602')) 中有两个不同的字符串文字 '\{}''U0001F602'。第一个字符串将在运行时使用 .format 进行解析,这根本不会使结果成为字符串文字 - 它是一个复合值。