就讀自己變成再次角落...FUNC(* ARGS,** kwargs,x)的拋無效語法
def superfunction(*args, **kwargs, k):
^
SyntaxError: invalid syntax
請告訴我治林打破嗎?看起來你不應該將「常規」變量與*變量混合在一起,但我無法找到任何人確認或否認這一點。我讀過某處(現在我當然不能找到),有些類型的論據必須首先出現,我相信關鍵字論證,這可能是也可能不是我的問題的一部分。
就讀自己變成再次角落...FUNC(* ARGS,** kwargs,x)的拋無效語法
def superfunction(*args, **kwargs, k):
^
SyntaxError: invalid syntax
請告訴我治林打破嗎?看起來你不應該將「常規」變量與*變量混合在一起,但我無法找到任何人確認或否認這一點。我讀過某處(現在我當然不能找到),有些類型的論據必須首先出現,我相信關鍵字論證,這可能是也可能不是我的問題的一部分。
試試這個:
def superfunction(k, *args, **kwargs):
的**kwargs
變量關鍵字參數必須是在函數聲明中的最後一部分。倒數第二位,*args
變量位置參數。 (僅在Python 3.x中,您也可以在*args
和**kwargs
之間具有關鍵字參數)。首先,位置參數 - 這是聲明函數參數的正確方法。看看這post瞭解更多詳情。
有關完整參考資料,請參閱Python 3.x或Python 2.x中的函數定義部分。
語法應該是這樣的:
def superfunction(k, *args, **kwargs):
首先你給所有的位置參數,那麼非關鍵字參數,然後關鍵字參數。
爲什麼這是錯誤的細節在Python 2.x和3.x之間稍有不同;請參閱教程部分[關鍵字參數](http://docs.python.org/2/tutorial/controlflow.html#keyword-arguments)和參考部分[函數定義](http://docs.python.org/ 2/reference/compound_stmts.html#function)爲您的相應版本提供詳細信息。但是簡單地說,'**'參數後面什麼也沒有。 – abarnert
我也有一個[博客文章](http://stupidpythonideas.blogspot.com/2013/08/arguments-and-parameters.html)解釋了完整的細節;我不認爲這對新手友好......但我希望它至少比閱讀參考文檔更容易一些。 (但它是Python 3特有的。) – abarnert