2017-04-03 75 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}