Python 3:是否需要使用unicode_escape编码?

Python 3: is there any need of using unicode_escape encoding?

This link 列出了一些 python 特定的编码。

其中一个编码是"unicode_escape"。

我只是想弄清楚,真的需要这种特殊编码吗?

>>> l = r'C:\Users\userx\toot'
>>> l
'C:\Users\userx\toot'
>>> l.encode('unicode_escape').decode()
'C:\\Users\\userx\\toot'

如果您在上面看到,'l' 是一个 unicode 对象,它已经处理好转义反斜杠。将其转换为 "unicode_escape" 编码会增加一组转义反斜杠,这对我来说没有任何意义。

问题:

  1. 真的需要"unicode_escape"编码吗?
  2. 为什么"unicode_escape"在上面多加了一组反斜杠?

引用 the document you linked:

Encoding suitable as the contents of a Unicode literal in ASCII-encoded Python source code, except that quotes are not escaped. Decodes from Latin-1 source code. Beware that Python source code actually uses UTF-8 by default.

因此,print(l.encode('unicode_escape').decode()) 做的事情 几乎完全等同于 print(repr(l)),除了它不在外部添加引号并在内部转义引号在字符串里面。

当你离开 print() 时,REPL 会执行默认的 repr(),所以你会转义两次反斜杠 - 与 运行 [= 时发生的事情完全相同14=].