2017-12-18 7 views
0

Pythonでは、関数にデフォルトのキーワード引数を設定する方法がいくつかあります。私が知っている方法があります。デフォルトのパラメータまたはkwargs?

def default(para_1: str = "this is", para_2: str = "an example"): 
    print(para_1, para_2) 

と:同じ効果を達成するために

default(para_1="this is", para_2="another example") 
keyword(para_1="this is", para_2="another example") 

def keyword(**kwargs): 
    para_1 = kwargs.get("para_1", "this is") 
    para_2 = kwargs.get("para_2", "an example") 

    print(para_1, para_2) 

これらの機能の両方がそうのように呼び出すことができます。 kwarg方法は同じで再構造化する必要はないだろうが

def mutable_default(para_1: dict = None): 
    if para_1 is None: 
     para_1 = {} 

:デフォルトパラメータとして書き込まれる必要があるだろう可変デフォルト値を、使用するときに2つの方法の間、私が知っている唯一の違いはあります

def mutable_keyword(**kwargs): 
    para_1 = kwargs.get("para_1", {}) 

2つの方法の間で優先的な方法はありますか?

+0

大きな違いがあります。最初の関数を呼び出す方法は明らかですが、2番目の関数を呼び出す方法は全くわかりません。どの引数が必要なのか分かっている場合は、常に指定します。 – zvone

答えて

4

はい。実際の引数は、関数のhelp()に表示されるので、可能な限り使用してください。関数に署名があることを確認すると、どのような引数を受け入れるかはわかりません。(**kwargs)署名(search_term, whole_word=False, case_sensitive=True)を見ることははるかに重要です。

グッドネームを使用することはドキュメントの一種であり、他のドキュメントを書く必要性が減ります(コードの変更により期限切れになる可能性もあります)。

関連する問題