簡體   English   中英

Python關鍵字args vs kwargs

[英]Python keyword args vs kwargs

這可能是一個簡單的問題:

這兩個之間有什么區別:

def myfunc(a_list = [], **kwargs):
    my_arg = kwargs.get('my_arg', None)
    pass

def myfucn(a_list = [], my_arg = None):
    pass

如果沒有,哪個會被認為更加pythonic?

謝謝,-Matt

對於一個簡單的函數,顯式定義你的參數更加Pythonic。 除非你有合法的要求接受任意數量的未知或變量參數,否則**kwargs方法會增加不必要的復雜性。

額外:永遠不要在函數定義中初始化列表! 這可能會導致意外結果,因為列表是可變的!

第一個可以提供幾乎所有提供的關鍵字參數(無論它只使用其中一個),而第二個只能使用兩個。 也不是Pythonic,你只需使用適合該任務的那個。

此外,第二個不是“關鍵字參數”,而是“默認值”。

第二種選擇允許my_arg作為位置而不是關鍵字參數傳遞。 當你實際上沒有把它用於任何東西時,我會認為聲明**kwargs是unpythonic。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM