2017-07-28 29 views
3

我在做py.checkio.org上的任務,我遇到了一個練習來編寫我自己的函數min()max()在python內置函數中的參數min()和sorted()

我在official documentation閱讀有關此功能的文檔,我很驚訝介紹的參數,它們看起來像:min(iterable, *[, key, default])

我想請問這個建築*[,意思是,這是奇怪的,因爲*args**kwargs很清楚,也是[,arg]很清楚。 但是*[,很奇怪,這個參數是什麼意思?

P.S sorted() function有個奇怪的參數星號:sorted(... *, ...)這是什麼意思?

回答

3

以下適用於Python 3中(這是該OP鏈接)。


sorted函數定義的單星(*)表示所有下列命名的參數必須作爲關鍵字參數被供給(「僅關鍵字參數」,見PEP 3102)。這意味着下面的不會起作用:

>>> sorted([1, 2, 3], lambda x: x) 
[...] 
TypeError: must use keyword argument for key function 

相反,你必須通過關鍵字參數提供這些參數:

>>> sorted([1, 2, 3], key=lambda x: x) 
[1, 2, 3] 

我不能完全確定什麼, *[, key, default]語法應指(這不是有效的Python,而是一個文檔目的),但我認爲開發人員想要表達同樣的事情,即你必須提供這些參數作爲關鍵字參數(因爲min a nd max可以採取任意數量的位置參數,這是唯一的方法)。

+0

我應該真正開始和學習Python 3的xD –

+0

@OP:這當然是正確的答案。編輯我的。 –

+0

謝謝,我正在尋找方式,我怎麼可以谷歌這個*,行爲,並得到stucked。非常感謝你的解釋。 –

3

[, key, default]部分不是Python語法,它是表示可選部分(此處爲可選參數)的通用編程語言語法語法。

編輯:*部分在a_guest的答案解釋(注:這是Python的3只)