2016-08-22 4 views
-1

Ich habe ein Problem mit optionalen und erforderlichen Argumente in einer Funktion.Erforderliche und optionale Argumente in Funktion

def process_data(*stock, currency) 

Mit den Argumenten

process_data('IVV', 'QQQ', 'USD') 

Yields den Fehler "Typeerror: process_data() fehlt 1 erforderlich Keyword-only Argument: 'Währung'"

+1

Fragen zur Fehlersuche ("Warum funktioniert dieser Code nicht?") Müssen ** das gewünschte Verhalten **, ein bestimmtes Problem oder einen Fehler und den kürzesten Code nec enthalten um es in der Frage selbst zu reproduzieren. Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. Siehe: Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels. –

+0

Anything * after * '* args' kann nur als * keyword arguments * angesprochen werden. Sie können keine Positionsargumente nach '* args' haben. Wie alle Ihre Argumente werden in '* stock' gesammelt. – deceze

Antwort

0

Verwendung *params in einer Funktion Definition gruppiert alle Positionsargumente als ein Tupel, wenn diese Funktion aufgerufen wird. Um zusätzliche Argumente abzufangen, müssen Sie sie in Keyword-Form angeben. dh liefert ihren Namen:

def process_data(*stock, currency='USD') 

und nicht angeben müssen, die Währung beim Aufruf, wenn Sie eine andere Währung erfordern:

process_data('IVV', 'QQQ', currency='USD') 

Sie alternativ currency mit einem Standardwert von USD angeben könnten

process_data('IVV', 'QQQ') 
+1

Danke, ich entdeckte auch, dass das Umkehren der Argumente das Problem behebt, so dass der Code aussieht wie 'def process_data (Währung, * stock)' ' ' – Nuubik

2

Sie müssen Python sagen, dass USD die Währung, da es keine andere Möglichkeit hat, wie Sie Ihren Variablen Werte zuweisen können:

Verwandte Themen