3

このコードを実行すると

def func(x, y, *w, **z):
  print x
  print y
  if w:
      print w

  if z:
      print z
  else:
      print "None"

func(10,20, 1,2,3,{'k':'a'})

次のように結果が得られます。

10
20
(1, 2, 3, {'k': 'a'})
なし

しかし、私は次のように予想しました。つまり、リストパラメーター (1,2,3) は *w に一致し、辞書は **z に一致します。

10
20
(1,2,3)
{'k':'a'}

Q : 何がうまくいかなかったのですか? リストと辞書をパラメーターとして渡すにはどうすればよいですか?

追加した

func(10,20, 10,20,30, k='a')

働いているようだ

4

3 に答える 3

7

辞書の前に 2 つのアスタリスクを置きます。

func(10,20, 1,2,3,**{'k':'a'})
于 2010-04-26T18:13:24.430 に答える
2

「入力」形式が何であるかはわかりませんが、これは機能します:

func(10,20, 1,2,3, k='a')

これにより、最後に k=a を配置する必要さえありません。最初の 2 つの引数の後の任意の場所に配置できます。次に、1、2、3 およびその他の「名前のない」引数は、単一の星の引数のタプル (と思いますか?) に詰め込まれます。

于 2010-04-26T18:18:59.550 に答える
1

より明確にしたい場合は、次のことができます

func(10,20,*[1,2,3],**{'k':'a'})

各特殊形式のパラメーターで使用する引数を (リーダーに対して) 指定します。

于 2010-04-26T18:17:45.463 に答える