什么时候Python的List,Tuple最后一个Item后面要加上一个逗号

时间:2022-01-12 19:45:20

为什么看Python的代码,有时候会在数据结构的最后一项末尾加上逗号。直接来看,这个逗号很多余。

根据PEP81的解释:

Trailing commas are usually optional, except they are mandatory when making a tuple of one element

这里说末尾逗号不是必填的,除非你写了一个只有一个元素的元祖。

所以这么多人写的代码风格都是多余的?

不是的。PEP8在上面一句的后来接着写道,末尾的代码可以帮助减少bug:

  1. 比如多人协作项目,一个列表的项可能由不同的人添加,你留着一个逗号可以帮助下一个修改的人减少出bug的几率
  2. 因为两个被引号包裹的字符串,会有自动合并功能。所以这也是一个潜在的bug

PEP8继续提到,适合在结尾加上额外逗号的代码类似下面这样,末项以逗号结尾,再起一行加上闭合括号:

FILES = [
'setup.cfg',
'tox.ini',
]
initialize(FILES,
error=True,
)

但是,如果代码是下面这种形式,末尾逗号和闭合括号是紧连的,那这个逗号就没有必要了:

FILES = ['setup.cfg', 'tox.ini',]
initialize(FILES, error=True,)