2016-06-25 25 views
1

Ich möchte eine Funktion machen, die "Standard" -Werte für Kwargs ableitet, basierend auf den Nicht-Kwargs, die an sie übergeben werden. Zum Beispiel:Python Kwargs, die Wert von anderen Argumenten nehmen

numbers= [1,2,3,4,5] 

def someMath(lst, divideBy = len(lst)): 
    return sum(lst)/divideBy 

In diesem Beispiel würde ich den Standardrückgabewert der Funktion wie die Summe der übergebenen Zahlen Liste durch die Länge der Liste geteilt zu sein.

someMath(numbers) # returns 3 

Allerdings möchte ich noch die Option, was der divideBy Wert ändern:

someMath(numbers, divideBy=5) # returns 5 

Ist das möglich und wie?

+0

YEP definitiv ein Duplikat – RSHAP

+0

„Dynamic Standardargumente in Python Funktionen“ beantwortet meine Frage genau – RSHAP

Antwort

1

Ich denke, die Art und Weise Python-Programmierer würde in der Regel schreibe dies folgendes zu tun ist:

def someMath(lst, divideBy=None): 
    if divideBy is None: 
     return sum(lst)/len(lst) 
    return sum(lst)/divideBy 
+0

Dank das macht Sinn - meine Das eigentliche Programm hat ein paar mehr Argumente, damit ich mich frage, ob es möglich ist, ohne ein '' 'wenn nicht kwarg zu schreiben:' '' für jeden ... aber vielleicht ist es einfach nicht – RSHAP

+0

Nun, ganz oben Du könntest etwas komplizierteres tun, wenn du 'filter (bool ...' 'und die String-Werte deiner Argumente verwendest, aber das wäre viel weniger leserlich, als einfach eins nach dem anderen zu testen, ob die Werte sup sind geübt oder nicht. – erewok

+0

ja nein, du hast Recht, es gibt keine Notwendigkeit. Ihre Antwort ist die richtige Antwort. wird markieren, sobald es mich lässt – RSHAP