Pythonの多くの側面は単に機能の重複しているようです。 Pythonでkwargsとdictで見ている冗長性を超えて、いくつかの違いがありますか?Python 3.2の** kwargsとdictの違いは何ですか?
10
A
答えて
8
引数の違い開梱(多くの人がkwargs
を使用する場合)および引数の1つとしてdict
を渡すことがあります:引数のアンパックを使用して
は:
辞書を渡す# Prepare function def test(**kwargs): return kwargs # Invoke function >>> test(a=10, b=20) {'a':10,'b':20}
として引数:
# Prepare function def test(my_dict): return my_dict # Invoke function >>> test(dict(a=10, b=20)) {'a':10,'b':20}
違いは、主に以下のとおりです。
- 可読性(これらは明示的に定義されていない場合でも、あなたは、単にキーワード引数を渡すことができます)、
- 柔軟性(明示的にいくつかのキーワード引数をサポートして
**kwargs
を使用して、残りすることができます) 、 - 引数アンパックは、あなたが(一般的にはPythonは、開発者は別のトピックである、彼らは何をしているか知っていると仮定して、あまり重要でない)引数を「含む」オブジェクトへの予期しない変更を避けることができます
+4
アンパックすると、キーは有効な識別子である必要があります –
+0
@gnibbler:あなたは正しいです、+1。私はそれを完全に逃した。例として、{(0:10、 '0':20}) '(' {0:10、 '0':20} 'を返す)' 'test 'を与えて、引数を解凍するのは難しい。 – Tadeck
3
ほとんどの場合、dictsと** kwargsだけを交換できます。例えば
:
my_dict = {'a': 5, 'b': 6}
def printer1(adict):
return adict
def printer2(**kwargs):
return kwargs
#evaluate:
>>> printer1(my_dict)
{'a': 5, 'b': 6}
>>> printer2(**my_dict)
{'a': 5, 'b': 6}
は、しかし、あなたが他の引数とそれを組み合わせる場合は、より多くの柔軟性を持っているkwargsからで:
def printer3(a, b=0, **kwargs):
return a,b,kwargs
#evaluate
>>> printer3(**my_dict)
(5, 6, {})
関連する問題
- 1. Pythonの規約とは何ですか?kwargs vs ** kwds vs ** kw?
- 2. Pythonの__getattribute__とobj .__ dict __ ['x']の違いは?
- 3. A`と ``の違いは何ですか[:] `
- 4. Python 3.2でcsv(dict)リーダーオブジェクトをチャンクする方法は?
- 5. アクティブなpythonとpythonの違いは何ですか?
- 6. redisのdict実装で安全/非安全dict itereatorの違いは何ですか?
- 7. Pythonでは、パスとリターンの違いは何ですか
- 8. Python対JythonとIronPythonとwxPythonの違いは何ですか?
- 9. Python classmethods:インスタンスのメンバとクラスのメンバの違いは何ですか? Pythonでは
- 10. Pythonフォーマッタの `%`と `、`の違いは何ですか?
- 11. Pythonのpycファイルとpyoファイルの違いは何ですか?
- 12. PythonスレッドモジュールのEventとLockの違いは何ですか?
- 13. Pythonの "2 * 2"と "2 ** 2"の違いは何ですか?
- 14. python sklearn:accuracy_scoreとlearning_curveのスコアの違いは何ですか?
- 15. pythonのrandom.normalvariate()とrandom.gauss()の違いは何ですか?
- 16. pythonのheapqとPriorityQueueの違いは何ですか?
- 17. python 3のiterableとlistの違いは何ですか?
- 18. Pythonの "Actor model"と "Reactor pattern"の違いは何ですか?
- 19. Pythonのリテラルと変数の違いは何ですか?
- 20. Pythonの!rと%rの違いは何ですか?
- 21. Pythonのセットとリストの違いは何ですか?
- 22. urlはkwargsからと何NoReverseMatch
- 23. "python scriptname.py"と "scriptname.py"の違いは何ですか?
- 24. djangoパッケージとpythonライブラリの違いは何ですか?
- 25. ツイスト(Python) - 協調と共通の違いは何ですか?
- 26. Pythonマルチプロセッシング:mapとimapの違いは何ですか?
- 27. Python str(u'a ')とu'a'.encode(' utf-8 ')の違いは何ですか?
- 28. pytzとpython-dateutilの違いは何ですか?
- 29. django classonlymododとpython classmethodの違いは何ですか?
- 30. Pythonデコレータとデコレータパターンの違いは何ですか?
'** kwargs'は、暗黙的に(*' dict'オブジェクトを作成しますキーと値がロードされた '' kwargs'')これは重複した機能ではありません。 –
「多くの側面」で展開します。重複する機能の他の領域は何ですか? – jdi