什么是更好的做法?
self.call(1, True, "hi")
要么
self.call(1, True, "hi",)
以下情况如下:
self.call(
1,
True,
"hi"
)
要么
self.call(
1,
True,
"hi",
)
?
在数据结构中添加尾随逗号的原因对我来说很熟悉,但是函数调用呢?
我认为没有技术上的理由可以避免在函数调用中使用逗号,但是有些人可能会发现它们会分散注意力。有些人可能会停下来说:
“嗯,我想知道那真的应该在那儿吗?”
我不愿意称这是一个好处,但是使用尾随逗号和缩进样式的一个效果是在添加参数时使版本控制差异看起来更清晰一些。
例如,这样的函数:
def my_fun(a, b, c=None):
...
......这样叫:
my_fun(
a='abc',
b=123
)
...然后改为:
my_fun(
a='abc',
b=123,
c='def'
)
在git中生成这个diff:
$ git diff
...
my_fun(
a='abc',
- b=123
+ b=123,
+ c='def'
)
然而,
my_fun(
a='abc',
b=123,
)
变成...
my_fun(
a='abc',
b=123,
c='def',
)
在git中生成这个diff:
$ git diff
...
my_fun(
a='abc',
b=123,
+ c='def',
)
在数据结构中,尾随逗号对于更容易添加项目是“有用的”:
a = [
1,
2,
3,
]
更容易改变
a = [
1,
2,
3,
4,
5,
]
因为您不必编辑说3,
的行。
但是函数调用没有这样的好处,通常不会改变长度。所以我不鼓励使用尾随逗号。
我也会留下我的2美分,即使这个帖子已经在这里待了一段时间,它可能会让某人受益:)
PEP8实际上确实说when to use trailing commas,如果你遵循他们的建议(不是强制性的,但绝对推荐),那么可以排除你的第二个单行例子,即:
没有:
self.call(1, True, "hi",)
是:
self.call(
1,
True,
"hi",
)
函数调用中的用法(谨慎使用从不),原因如下:
实际用途
[]
xD结论:
我认为,在这个问题中,同样的原因适用于列表和元组,因为函数参数列表就是这样。
以下是针对该语言(c.f.)的设计决策常见问题解答的引用:
为什么Python在列表和元组的末尾允许使用逗号?
Python允许您在列表,元组和字典的末尾添加一个尾随逗号:
[1, 2, 3,] ('a', 'b', 'c',) d = { "A": [1, 5], "B": [6, 7], # last trailing comma is optional but good style }
有几个理由允许这样做。
如果列表,元组或字典的文字值分布在多行中,则更容易添加更多元素,因为您不必记住在上一行中添加逗号。这些行也可以重新排序,而不会产生语法错误。
意外省略逗号会导致难以诊断的错误。例如:
x = [ "fee", "fie" "foo", "fum" ]
这个列表看起来有四个元素,但它实际上包含三个:“费用”,“fiefoo”和“fum”。始终添加逗号可避免此错误来源。
允许尾随逗号也可以使编程代码生成更容易。