在python中有一个非常有用且非常有用的工具,您可以通过它来模拟函数签名上元组的匹配值。
def first((a, b)):
return a
x = (4, 9)
first(x)
li = [(5, 4), (8, 9)]
map(first, li)
def second(a, b):
# does not work the same way
return b
我没有看到任何有关此用途的文献。 python社区用于此的词汇是什么?是否有令人信服的理由不使用它?
答案 0 :(得分:6)
它被称为tuple parameter unpacking并且是removed in Python 3.0。
就像@zondo所说,出于兼容性原因,您可能不想使用它。我自己仍然偶尔在Python 2中使用它。你会在我的第一个链接的PEP中找到反对它的理由,但请记住,这些是它从语言中删除的原因,我认为它至少是部分是因为它让Python制造商更容易,这不一定是你或我避免它的原因。
答案 1 :(得分:2)
在Python2中,这太棒了。然而,它在Python3中是无效的语法,因此我不建议将其用于前向兼容性原因。
答案 2 :(得分:0)
可接受的答案并未显示如何解决此问题,所以让我将其拼写出来。
Python 2代码
def fun(a, (b, c), d):
print("a {0} b {1} c {2} d {3}".format(a, b, c, d))
可以重构为
def fun(a, _args, d):
b, c = _args
print("a {0} b {1} c {2} d {3}".format(a, b, c, d))
这也是有效的Python 3代码。
称呼它
fun(1, [2, 3], 4)
链接的PEP-3113对此进行了更详细的说明,并提供了在Python 3.0中删除此语法的理由。