這是一個基本問題。有沒有在做* args,** kwargs與用tuple和dict調用有什麼區別?
def foo(*args, **kwargs):
"""standard function that accepts variable length."""
# do something
foo(v1...vn, nv1=nv1...nvn=nvn)
def foo(arg, kwargs):
"""convention, call with tuple and dict."""
# do something
mytuple = (v1, ..vn)
mydict = {nv1=nv1, ...nvn=nvn}
foo(mytuple, mydict)
我可以做同樣的事情雙全,除了後面有創造一個tuple
和dictionary
的一個奇怪的慣例不同。但基本上有區別?我可以解決處理無限事物的相同計算問題,因爲無論如何,dict
和tuple
都可以照顧到這一點?
這是Python的一個慣用部分,也就是好的句法糖對於你做的事情呢? I function
將爲您處理這個問題!
PS:雖然我同意這是Why use packed *args/**kwargs instead of passing list/dict?的副本,但不確定有那麼多的downvotes,可能它應該在重複的信息中更正。這個問題已經收到了讚揚。那麼我是否因爲無法找到那個而低估?
您可以*在片段中看到差異*第一個版本允許您傳遞任意位置和關鍵字參數,第二個版本要求您傳遞兩個參數。 – jonrsharpe
但是,我可以解決我原來的問題處理inifinte長度的項目。元組和Dicts已經無限大? – Nishant
http://stackoverflow.com/questions/33542959/why-use-packed-args-kwargs-instead-of-passing-list-dict?rq=1 – warvariuc