I.はじめに
1. *引数と**は、2つの変数のパラメータが関数であるkwargsから
2. * argsが元祖を返します。
3. ** kwargsから辞書を返します。
II。デモ
定義:; ** kwargsからしか認識し、このキーパラメータa = 1、その他が識別されない以下の機能については、* argsが非キーワードパラメータA = 1以外のすべてのパラメータを識別することができます
DEF追加(**、*引数をkwargsから): プリント(引数、kwargsから)を 追加(1、2、3、4、A = 1、B = 2) を追加(1) を追加(A = 1、B = 2) を追加(1、{ "A":1}) を追加( "1"、[1,2]、{ "A":1}、(1,2)) を追加(* [1、2]、** {」 A ":1})
結果:
(1、2、3、4){ '':1、 'B':2}
(1){}
(){ '':1、 'B':2}
(1、{ 'A' :1}){}
( '1'、[1、2]、{ 'A':1}、(1,2)){}
(1、2){ 'A':1}
結論:
1.それだけ= 1、B = 2 ** kwargsから、これはそれを認識することであるか、あるいは空の辞書を返すことは明らかであり、非A = 1、これはそれを認識することであるB = 2つの*引数、または他のリターンのために空の元祖。
2.しかし、({ "A":1} * [1、2]、**)に対する結果は(1,2)である理由、これが起こる追加{ 'A':1}、よりもむしろ([1 、2]、{「A」:1})は、それはあなたがそれの前に数*(1,2)*を追加するときに、2つの図1及び図2にそれを破ることと等価であるためであり、その後合格**ため*引数、その{「A」:1} *番号2つの同等の添加では、それが= 1に分割されて、その後渡さ** kwargsからは、最終的な結果は、(1 、2){ 'A':1}。