[英]Python argument unpacking
有時,某些函數會交換一些非常特殊的數據元組。
>>> 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
可以簡化一下:
>>> def f(a, b, (x,y,z)):
... # ...
... # the same implementation
... # ...
... print a, b, '(', x, y, z, ')'
它讓讀者感覺更清潔。 它只是一行代碼,但它也是完全不必要的代碼,它也使該函數的簽名看起來更清晰。
這種技術有任何隱藏的陷阱嗎? 它是一個普遍不贊成的功能(在這種情況下,我感興趣的原因)?
我使用python 2.7。 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.