【问题标题】:Passing list and dictionary type parameter with Python使用 Python 传递列表和字典类型参数
【发布时间】:2011-02-12 12:45:38
【问题描述】:

当我运行这段代码时

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'}

问:出了什么问题?如何将列表和字典作为参数传递?

添加

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

似乎在工作

【问题讨论】:

标签: python parameter-passing


【解决方案1】:

在字典前加两个星号:

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

【讨论】:

  • 这给出了 OP 想要的。
【解决方案2】:

如果你想更加明确,你可以这样做

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

指定(向读者)您希望与每个特殊形式参数一起使用的参数。

【讨论】:

    【解决方案3】:

    我不确定“输入”格式是什么,但这会起作用:

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

    有了这个,你甚至不需要把 k=a 放在最后,它可以放在前两个参数之后的任何地方。然后 1,2,3 和其他“未命名”参数被填充到单星 arg 的元组中(我认为?)。

    【讨论】:

      猜你喜欢
      • 2016-07-22
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      • 2020-11-09
      • 1970-01-01
      • 2018-11-28
      • 2013-12-07
      • 2021-09-27
      相关资源
      最近更新 更多