其实并没有什么“原始的”string“;有原始的字符串文字,它们正是由 标记的字符串文字'r'
在开盘报价之前。
“原始字符串文字”与字符串文字的语法略有不同,其中反斜杠,\
, 被视为“只是一个反斜杠”(除非它出现在引号之前,否则会终止文字)——没有“转义序列”来表示换行符、制表符、退格键、换页符等。在普通字符串文字中,每个反斜杠必须加倍以避免被视为转义序列的开头。
这种语法变体的存在主要是因为正则表达式模式的语法中含有大量反斜杠(但永远不会出现在末尾,因此上面的“except”子句并不重要),并且当您避免将它们中的每一个都加倍时,它看起来会更好一些 - - 就这样。它在表达本机 Windows 文件路径(使用反斜杠而不是像其他平台上的常规斜杠)方面也受到了一些欢迎,但很少需要(因为普通斜杠大多数在 Windows 上也能正常工作)并且不完善(由于“例外”子句)多于)。
r'...'
是一个字节字符串(在 Python 2.* 中),ur'...'
是一个 Unicode 字符串(同样,在 Python 2.* 中),其他三种引用中的任何一种也会生成完全相同类型的字符串(例如r'...'
, r'''...'''
, r"..."
, r"""..."""
都是字节字符串,依此类推)。
不知道你所说的“去”是什么意思back“ - 本质上没有前后方向,因为没有原始字符串type,它只是表达完全正常的字符串对象、字节或 unicode 的替代语法。
是的,在 Python 2.* 中,u'...'
is当然总是不同于只是'...'
-- 前者是unicode字符串,后者是字节字符串。文字可以用什么编码来表达是一个完全正交的问题。
例如,考虑(Python 2.6):
>>> sys.getsizeof('ciao')
28
>>> sys.getsizeof(u'ciao')
34
Unicode 对象当然需要更多的内存空间(对于很短的字符串来说,差异非常小,显然;-)。