前言
解释为何我喜欢在Python的列表/元祖的最后一个元素末尾加一个逗号
需求
编写一个函数,输入多个人名,并分别输出Hello,某某某
。
方案
这个小功能实现起来就是小菜一碟。
# coding:utf-8
def say_hello(names):
for name in names:
print('Hello,{}!'.format(name))
if __name__ == '__main__':
names = [
'Lucy',
'Lili',
'Lisa',
]
say_hello(names)
这代码的编码风格有几个值得注意的地方:
names
这个列表每个元素占一行Lisa
这个末尾元素后面还有一个逗号
方便查看代码变更
假设现在需要新加一个人名Rose
,只需要在names
末尾添加即可。在使用git diff
时能很方便地看到仅仅添加了一行。
我曾经遇到过类似的场景,在添加Rose
的同时,Lisa
被修改成了Lina
,git diff
查看改动时,也没有细看。
减少引入不必要的bug
考虑以下代码各有什么问题?
# 新增了一个`Lili`。
names = [
'Lucy'
'Lili'
]
# names为['LucyLili'],缺少逗号Python3会直接连接字符串
# 使用元祖,且只有一个元素
names = (
'Lucy'
)
# names为'Lucy',定义单元素元祖时,逗号是必须的。相信不少人踩过这个坑。
总结
在列表/元祖的末尾元素多写一个逗号,是我个人比较推荐的编码风格。带来的好处如下:
- 增删元素时,减少引入bug的风险
- 查看代码变更时,更直观
import
时也推荐采用此风格