2017-04-03 128 views
0

显然,我在这里失去了一些东西很容易,但我不能得到答案。包装和拆包字典

问题是为什么的代码:

def func1(arg1, *arg2): 
    print arg1 
    print arg2 
arg1=1 
arg2 = [1,2,3] 
func1(arg1, *arg2) 

给出1(1,2,3)

def func2(arg1, **arg2): 
    print arg1 
    print arg2 
arg1=1 
arg2 = {'arg2_1':1,'arg2_2':2,'arg2_3':3} 
func2(arg1, **arg2) 

给出1 {}代替1- { 'arg2_1' :1, 'arg2_2':2 'arg2_3':3}。

我怎么能打包和解包的字典,而无需编写它的所有既不在功能定义,也没有在函数调用的元素? (在实际情况下,词典有很多的元素,并且通过理解所定义。)

+1

据我所知,你已经在做它了。或者我不明白这个问题。 – wim

+2

我无法重现此行为(打印空白字典)。你使用的是什么版本的Python? – asongtoruin

+0

我就http://www.codeskulptor.org/运行它现在我做到了我的电脑上运行正常.. – akotronis

回答

0

实际上它的作用。使用python 2.7.12:

>>> def func2(arg1, **arg2): 
...  print arg1 
...  print arg2 
... 
>>> arg1=1 
>>> arg2 = {'arg2_1':1,'arg2_2':2,'arg2_3':3} 
>>> func2(arg1, **arg2) 
1 
{'arg2_1': 1, 'arg2_3': 3, 'arg2_2': 2}