语法怪癖或为什么是有效的python

时间:2009-12-21 15:23:16

标签: python syntax

在python 2.6中,为什么以下行有效?

my_line = 'foo' 'bar'

如果这是有效的,为什么不是以下内容:

my_list = 1 2 

第一个例子是字符串连接,但是,以下内容也无效(感谢上帝):

foo = 'foo'
bar = 'bar'
foo_bar = foo bar

4 个答案:

答案 0 :(得分:20)

这是string literal concatenation。如文档中所述,优势包括以下内容:

  

此功能可用于减少   要分割的反斜杠数量   长串方便   行,甚至添加评论   字符串的一部分...

接下来请注意,此连接是在编译时而不是运行时完成的。

PEP 3126中描述了此背后的历史和基本原理以及删除该功能的被拒绝建议。

答案 1 :(得分:8)

my_line = 'foo' 'bar'是字符串连接。

答案 2 :(得分:6)

也许这是C的祖先。在C中,以下内容完全有效:

char* ptr = "hello " "world";

它由C pre-processor (cpp)实现,该链接中给出的基本原理是:

  

这允许拆分长字符串   多行,也允许   由C产生的字符串文字   预处理器定义和宏   在编译时附加到字符串

答案 3 :(得分:5)

这并不矛盾。字符串和整数有不同的方法。

整数连接没有意义。

字符串连接是一种有意义的默认行为。