在Python中传递列表和字典类型参数
当我运行这段代码时
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'}) None
但是,我原本期待的结果是这样的,我是说列表参数 (1,2,3) 应该匹配 *w,而字典应该匹配 **z。
10 20 (1,2,3) {'k':'a'}
问:出了什么问题?我该如何将列表和字典作为参数传递?
补充
func(10,20, 10,20,30, k='a')
看起来是可以工作的
3 个回答
1
如果你想让事情更清楚明白,可以这样做:
func(10,20,*[1,2,3],**{'k':'a'})
这样可以告诉别人,你想把哪个参数和每个特殊形式的参数对应起来。
2
我不太确定“输入”的格式是什么,但这个方法可以用:
func(10,20, 1,2,3, k='a')
用这个方法,你甚至不需要把 k=a 放在最后,它可以放在前两个参数之后的任何地方。然后,像 1、2、3 这些没有名字的参数会被放进一个元组里(我想是这样?)作为单星参数。
7
在字典前面加两个星号:
func(10,20, 1,2,3,**{'k':'a'})