これは簡単な質問かもしれません:
次の2つの間に違いはありますか?
def myfunc(a_list = [], **kwargs):
my_arg = kwargs.get('my_arg', None)
pass
と
def myfucn(a_list = [], my_arg = None):
pass
そうでない場合、どちらがよりpythonicと見なされますか?
ありがとう、-マット
これは簡単な質問かもしれません:
次の2つの間に違いはありますか?
def myfunc(a_list = [], **kwargs):
my_arg = kwargs.get('my_arg', None)
pass
と
def myfucn(a_list = [], my_arg = None):
pass
そうでない場合、どちらがよりpythonicと見なされますか?
ありがとう、-マット
単純な関数の場合、引数を明示的に定義する方がPythonicです。未知の引数または可変の引数をいくつでも受け入れるという正当な要件がない限り、この**kwargs
メソッドは不必要な複雑さを追加します。
ボーナス:関数定義でリストを初期化しないでください!リストは変更可能であるため、これが持続することにより、予期しない結果が生じる可能性があります。
最初の引数は、提供された実質的にすべてのキーワード引数を取ることができます(1つだけを使用するという事実に関係なく)が、2番目の引数は2つしか取ることができません。どちらもPythonicではなく、タスクに適したものを使用するだけです。
また、2つ目は「キーワード引数」ではなく、「デフォルト値」です。
2番目の方法では、my_argをキーワード引数ではなく位置引数として渡すことができます。**kwargs
実際に何にも使用しないときに宣言するのは非Python的だと思います。