python中字符串列表的问题

kur*_*zak 5 python list

为什么在地球上没有解释器每次我这样做时都会引发SyntaxError:

my_abc = ['a',
          'b',
          'c'
          'd',]
Run Code Online (Sandbox Code Playgroud)

我只想将'c'添加到字符串列表中,忘了附加逗号.我希望这会导致某种错误,因为它是不正确的.

相反,我得到了:

>>> my_abc
 ['a', 'b', 'cd']
Run Code Online (Sandbox Code Playgroud)

绝不是我想要的.

为什么会自动连接?我几乎无法计算我被这种行为咬了多少次.有什么我可以做的吗?

只是为了澄清*:我实际上并不介意自动连接,我的问题只能用字符串列表来做,因为它们通常不仅仅包含文本,它们用于控制流,传递字段名称和许多其他的事情.

man*_*del 12

被称为"隐式字符串连接"和提议删除它的PEP被拒绝:http://www.python.org/dev/peps/pep-3126/


wRA*_*RAR 6

这是设计的.例如,它允许在不使用+的情况下在多行中写入长字符串文字.


kri*_*iss 3

正如其他人所说,这是设计使然。

为什么会这样呢?主要是出于历史原因:C 也这样做。

在某些情况下,它很方便,因为它可以减少语法噪音并避免添加不需要的空格(内联 SQL 查询、复杂的正则表达式等)。

你能做些什么呢?不多,但如果它确实经常发生在您身上,请尝试以下技巧之一。

  • 在行首用逗号缩进列表。这很奇怪,但如果你这样做,缺失的昏迷就会变得明显。
  • 尽可能将字符串分配给变量并使用变量列表(出于其他原因,例如避免重复的字符串,这通常是一个好主意)。
  • 拆分列表:对于单词列表,您可以将整个列表仅放入一个字符串中,然后将其拆分,如下所示。对于超过 5 个元素,它也会更短。

    'abcd e'.split(' ').