内联元组创建 - 哪个更具可读性?

Inline Tuple Creation - Which is More Readable?

我试图决定我应该如何从可读性的角度处理在方法调用中创建元组。

标准方法似乎很容易忽略元组的括号,尤其是当它在多个嵌套调用中时:

Foo(a, b).bar((c, len(d)))

到目前为止,我已经想出两种不同的方法来使创建元组变得明显。我可以显式调用 tuple() 函数,例如:

Foo(a, b).bar(tuple(c, len(d)))

或者,我可以稍微扩展该行以使元组括号更加明显:

Foo(a, b).bar(
    (c, len(d))
)

应该优先考虑或考虑以下哪些 "pythonic"?或者有更好的方法来解决这个问题吗?

而不是这个:

Foo(a, b).bar((c, len(d)))

展开即可:

foo = Foo(a, b)
barparam = (c, len(d))
foo.bar(barparam)

易于阅读,易于修改,修改后易于代码审查。

我想我更愿意将 bar 重写为接受两个参数 Foo(a, b).bar(c, len(d))。如果你想在这种情况下使用元组,它可以是

barparam = (c, len(d))
foo = Foo(a,b)
foo.bar(*barparam)