有时,一些函数交换一些非常特别的数据元组。在
>>> 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
可以简化一点:
对读者来说它更干净一些。这只是一行代码,但它也是完全不必要的代码,而且它还使函数的签名看起来更干净。在
这种技术有没有隐藏的陷阱? 这是一个普遍不赞成的功能(在这种情况下,我感兴趣的原因)?在
我使用python2.7。谢谢!在
在Python3中,Tuple Parameter Unpacking feature is removed。根据政治公众人物3113:
所以不要使用它;它只会使代码Python2兼容。 PEP中讨论的避免元组参数解包的其他原因包括
相关问题 更多 >
编程相关推荐