Python 解析器 将其解释为一个字符串。Lexical Analysis文档中对此进行了详细记录:
允许使用可能使用不同的引用约定的多个相邻字符串文字(由空格分隔),其含义与它们的串联相同。因此,"hello" 'world'
等效于"helloworld"
。
编译后的Python代码只能看到一个字符串对象。您可以通过要求Python生成此类字符串的AST来查看此内容:
>>> import ast
>>> ast.dump(ast.parse("'hello' 'world'", mode='eval').body)
"Str(s='helloworld')"
实际上,正是在构建AST的过程中触发了级联,因为遍历了语法分析树,请参见AST C源代码中的parsestrplus()
函数。
该功能专门用于减少反斜杠的需求。当它仍然在 逻辑 行中时,使用它在物理行之间分解字符串:
print('Hello World!', 'This string is spans just one '
'logical line but is broken across multiple physical '
'source lines.')
可以使用括号,方括号或花括号将多条物理线隐式合并为一条物理线。
此字符串连接功能是从C复制而来的,但是Guido van Rossum在记录中遗憾地将其添加到Python中。该帖子有一个很长很有趣的话题,并且为完全删除该功能提供了很多支持。