2017-04-03 6 views
0

Offensichtlich fehlt mir hier etwas sehr einfach, aber ich kann die Antwort nicht bekommen.Packen und Entpacken Wörterbuch

Die Frage ist, warum der Code:

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

gibt 1 (1, 2, 3)

während

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

gibt 1 {} statt 1 { 'arg2_1' : 1, 'arg2_2': 2, 'arg2_3': 3}.

Wie kann ich das Wörterbuch ein- und auspacken, ohne alle seine Elemente zu schreiben, weder in der Funktionsdefinition noch im Funktionsaufruf? (Im realen Fall hat das Wörterbuch viele Elemente und wird durch das Verständnis definiert.)

+1

Sie tun es bereits, soweit ich das beurteilen kann. Oder ich verstehe die Frage nicht. – wim

+2

Ich kann dieses Verhalten nicht reproduzieren (Drucken eines leeren Wörterbuchs). Welche Version von Python verwendest du? – asongtoruin

+0

Ich führe es auf http://www.codeskulptor.org/ Jetzt habe ich es auf meinem PC läuft wie erwartet .. – akotronis

Antwort

0

Eigentlich tut es. Verwenden von 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} 
Verwandte Themen