0
A
回答
7
正如你指出你的問題,你不使用它們在參數中(當你在中調用函數時發生),你在使用時創建的參數中使用它們一個函數。 *
和**
運營商在每種情況下都有不同的用途。
當你是定義了函數,它們指定位置參數將被放置在一個元組中,並且該關鍵字參數將被放置在一個字典中。是的,我只是說了一些論據,但在這種情況下,它們適用於參數。
def example(*args, **kwargs):
print "args: {0}".format(args)
print "kwargs: {0}".format(kwargs)
example(1, 2, 'a', foo='bar', bar='foo')
運行時,此輸出:
args: (1, 2, 'a')
kwargs: {'foo': 'bar', 'bar': 'foo'}
你明白我的意思,當我說我們將其運用到PARAMATERS在函數定義?參數是1, 2, 'a', foo='bar', bar='foo'
。參數爲*args, **kwargs
。
現在這裏是一個例子,將它們應用於參數。
def example2(a, b, foo=None, bar=None):
print "a: {0}, b:{1}, foo:{2}, bar: {3}".format(a, b, foo, bar)
args = (1, 2)
kwargs = {'foo': 'bar', 'bar': 'foo'}
example2(*args, **kwargs)
此輸出:
a: 1, b:2, foo:bar, bar: foo
你可以看到,當我們將它們應用到自變量(即當我們調用的函數),*
具有擴展列表或元組來填充的效果函數和**
的位置參數具有擴展字典以填充函數的關鍵字參數的效果。在擴展發生之後,你只需要確保總共有足夠的,沒有太多的參數。
,自變量是*args, **kwargs
和參數a, b, foo=None, bar=None
1
你希望你的函數接受非命名位置參數(*
),或額外的命名參數(**
)的任何時間。
在每個函數定義中包含*args, **kwargs
當然是可能的,但如果傳遞更多參數實際上不會產生任何效果,這可能不是一個好主意。
2
什麼時候可以在Python函數的參數中傳遞*和**?即:
簡短的回答:當你需要傳遞給你的函數的變量數量的參數。
這就是說,我真的認爲這是一個非常廣泛的問題。你會更好地閱讀更多關於這些概念的知識,嘗試一下,然後在這裏提出具體問題。
@ Wooble的answer會幫助你;但更能幫助您的是瞭解*args
和**kwargs
所做的事情。那麼你可以使用它們來適應你遇到的情況。
您可以瞭解更多的變量和關鍵字參數的概念,例如:
相關問題
- 1. 作爲函數參數的Python函數?
- 2. 函數作爲函數中的參數
- 3. 如何將函數作爲參數? (Python)
- 4. 在函數中使用參數作爲元組的函數
- 5. 如何使用python中的函數傳遞函數參數?
- 6. 在Python中使用函數作爲另一個函數的參數3.4.2
- 7. 使用數組作爲函數參數
- 8. 使用數組作爲函數參數
- 9. PHP函數作爲函數的參數
- 10. 使用Deque.popleft作爲函數的參數
- 11. 使用structura作爲函數的參數
- 12. Python在列表中使用變量作爲函數的參數
- 13. 如何使用不同參數的函數作爲函數參數
- 14. 函數參數作爲R函數中的參數
- 15. 函數中傳遞函數作爲參數時調用私有函數?
- 16. 函數作爲可選參數的Python函數定義
- 17. 傳遞函數作爲python參數
- 18. 發送Python函數作爲Boost.Function參數
- 19. python和函數參數
- 20. 作爲參數的函數
- 21. 使用...函數參數作爲另一個函數的輸入
- 22. 如何使用計數器作爲函數中的參數?
- 23. sql函數使用列作爲參數
- 24. 使用函數聲明作爲參數
- 25. 使用函數名稱作爲參數
- 26. 使用指針作爲函數參數
- 27. 使用函數作爲關鍵參數
- 28. 使用枚舉作爲函數參數
- 29. 使用函數指針作爲參數
- 30. java使用函數作爲參數
你看過嗎? http://docs.python.org/reference/compound_stmts.html#function-definitions – 2010-09-17 14:12:46