2014-06-09 17 views
5

mam słów kluczowych funkcji argumentu:argumenty słów kluczowych pyton z myślnikiem

def f1(**kw): 
    for key,val in kw.iteritems(): 
     print "key=%s val=%s" % (key,val) 

f1(Attr1 = "Val1", Attr2 = "Val2") # works fine. 

f1(Attr1-SubAttr = "Val1", Attr2 = "Val2") # complains about keyword being an expression. 

f1("Attr1-SubAttr" = "Val1", Attr2 = "Val2") # doesn't work either. 

Jak mogę przekazać w słowach kluczowych z łącznikiem? Nie mam kontroli nad tymi słowami kluczowymi, ponieważ analizuję je z istniejącej bazy danych.

Dzięki! -kumar

+0

Nie można mieć słowa kluczowe z myślnikiem. – wim

+0

to dobra wersja pomysłu: http://stackoverflow.com/questions/16956364/function-accepts-keyword-arguments-the-are-not-identifiers –

Odpowiedz

12

Argumenty dotyczące słów kluczowych musi być valid Python identifiers; nie pozwalają one na - jako zarezerwowane do odejmowania.

można przekazać w dowolnych ciągów używając zamiast **kwargs variable keyword argument syntax:

f1(**{"Attr1-SubAttr": "Val1", "Attr2": "Val2"}) 
+0

Dzięki, to zadziałało! – Kumar

+0

Jesteś gwiazdą rocka, dziękuję. –

+0

Zostawiając notatkę: użyłem tego na Pythonie Zeep, aby przekazać SOAP , który miał nazwę z myślnikiem. – epx

Powiązane problemy