Python参数解包

2024-04-22 17:17:29 发布

您现在位置:Python中文网/ 问答频道 /正文

有时,一些函数交换一些非常特别的数据元组。在

>>> def foo():
...    return (1,2,4)
...
>>> def f(a, b, v):
...    x, y, z = v
...    # ...
...    # suppose there are 2-4 lines of some trivial code
...    # ...
...    print a, b, '(', x, y, z, ')'
...
>>> f(1, 2, foo())
1 2 ( 1 2 4 )

这里的用例是,它实际上是一组特别的数据,所以我们不想引入一个新的类。(我们还假设元组本身只是一组数据,因此通过索引访问元组的元素,比如print a, b, '(', v[0], v[1], v[2], ')'会让读者感到困惑。)

所以,不管怎样。我们决定传递元组,然后我们要解包(解构)它们。更酷的是,您可以将参数元组解压到函数的参数列表中,这样f可以简化一点:

^{pr2}$

对读者来说它更干净一些。这只是一行代码,但它也是完全不必要的代码,而且它还使函数的签名看起来更干净。在

这种技术有没有隐藏的陷阱? 这是一个普遍不赞成的功能(在这种情况下,我感兴趣的原因)?在

我使用python2.7。谢谢!在


Tags: of数据函数代码参数returnfoodef
1条回答
网友
1楼 · 发布于 2024-04-22 17:17:29

在Python3中,Tuple Parameter Unpacking feature is removed。根据政治公众人物3113:

Unfortunately this feature of Python's rich function signature abilities, while handy in some situations, causes more issues than they are worth.

所以不要使用它;它只会使代码Python2兼容。 PEP中讨论的避免元组参数解包的其他原因包括

  • 反思问题
  • 移除后不会损失技能
  • 规则的例外
  • 非信息性错误消息
  • 很少使用

相关问题 更多 >