0

Ich erstelle eine sehr einfache Match-Market-Lösung, die in Wettshops verwendet würde. Ich habe eine Funktion, die wie folgt aussieht:Wie man optionale Argumente in Python überspringt und * args direkt aufruft

def create_market(name, match, providerID=str(uuid.uuid4()), market_kind=4, *market_parameters): 

Ich möchte mit name nur eine Funktion aufzurufen, match und market_parameters während die providerID Skipping und market_kind (da diese optional sind)

Beachten Sie, dass *market_parameters wird ein Tupel von Diktaten sein, die innerhalb der Funktion gesendet werden. Ich packe es wie:

for idx, data in enumerate(args): 
    for k, v in data.iteritems(): 
     if 'nWays' in k: 
      set_value = v 

Als ich dieses dict gesetzt wie

market_parameters = {'nWays' : 5} 

und rufen eine Funktion wie create_market('Standard', 1, *market_parameters)

Ich kann nicht die Daten innerhalb der Funktion Körper zu bekommen scheinen.

Was mache ich falsch?

+1

* "' * market_parameters' wird sei ein Diktat "* - Tupel, für Positionsparameter; '** Kwargs' wäre das Wörterbuch. – jonrsharpe

+0

@jonrsharpe ja, das ist richtig :) Ich wollte schreiben, dass * market_parameters eine unbekannte Anzahl von Dicts sein wird, die als Liste (Tupel) in eine Funktion übergeben werden. – mutantkeyboard

Antwort

1

Durch Auspacken wie *market_parameters Sie entpackten Werte als providerID senden (wenn Sie mehr Werte in Ihrem Wörterbuch haben dann als providerID, market_kind und so weiter).

Sie müssen wahrscheinlich

def create_market(name, match, *market_parameters, 
        providerID=str(uuid.uuid4()), market_kind=4): 

und rufen Funktion wie:

create_market('Standard', 1, market_parameters) # you don't need to unpack it. 

und wenn Sie providerID oder market_kind festlegen möchten dann:

create_market('Standard', 1, market_parameters, providerID=your_provider_id, market_kind=your_market_kind) 
+0

Ja. Das ist es. Danke @ Yewhen Kuzmovych. Du bist ein Lebensretter. – mutantkeyboard

+0

@mutantkeyboard Ich bin mir nicht sicher, was Sie versuchen, aber [kwargs] (http://StackOverflow.com/questions/1769403/understanding-kwargs-in-python) kann nützlich sein. –

Verwandte Themen