为什么 print 在 Python 中返回 \\,而不是转义字符 \

Aft*_*ray 4 python string format encode

下面的代码打印表情符号,如下所示:

print('\U0001F602')
print('{}'.format('\U0001F602'))
Run Code Online (Sandbox Code Playgroud)

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

print('\{}'.format('U0001F602'))
Run Code Online (Sandbox Code Playgroud)

为什么print('\{}'.format())返回的是\\,而不是转义字符\

我一直在检查这个并在谷歌中搜索,但找不到正确的答案。

tde*_*ney 6

参考字符串和字节文字,当 python 在编译程序时看到字符串文字中存在反斜杠时,它会查找下一个字符以了解如何转义后面的字符。在第一种情况下,以下字符是U让 python 知道它是 unicode 转义的。在最后一种情况下,它看到{,意识到没有转义,并且只发出反斜杠和该{字符。

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