2017-12-28 4 views
-2

Passing Ich lerne über * und *args und wie zu FunktionenTupeln und Wörterbücher zu übergeben.Wörterbuch als Funktionsargument

Alles ist gut, außer in der letzten Zeile, wenn ich ein Wörterbuch passieren, erhalte ich ein invalid syntax Fehler ...

def fun(name, location, year=2017): 
    print("%s|%s|%d" % (name, location, year)) 

my_tuple = ('Emma', "Munich", 2008) 

fun(*my_tuple) 

# I get Emma|Munich|2008 so it is fine. 

my_dict = {name="Jade", location='China', year=2010} 

fun(**my_dict) 

# Why do I get an error over the = sign? 

ich mit : versucht (auch wenn ich weiß, dass ich shouldn‘ t) =

+0

Die Fehlermeldung zu 'my_dict' Erklärung gerichtet sein sollte, nicht die Funktion aufrufen. ':' ist richtig, '=' ist nicht. Und Ihre Wörterbuchschlüssel müssen Strings sein. – excaza

+0

Sie haben die Syntax für eine Diktatanzeige einfach falsch eingegeben. Dies hat nichts damit zu tun, wie Sie ein Wörterbuch in einem Anruf verwenden. Ihr Fehler ist * in der Zeile, die das Wörterbuch erstellt *. –

Antwort

3

my_dict = {name="Jade", location='China', year=2010} hat ungültige Syntax in Schlüssel-Wert-Zuordnung. Sie müssen : statt = und Schlüssel müssen Strings sein:

my_dict = {"name": "Jade", "location": "China", "year": 2010} 
Verwandte Themen