Bestellung von Standard-und nicht-Standard-Argumente
In Python, ich verstehe, dass die Standard-Argumente kommen am Ende, und dass nicht-Standard-Argumenten nicht Folgen können, ein Standard-argument. Das ist in Ordnung. Wie zum Beispiel:
>>> def foo(x=0, y):
return x, y
SyntaxError: non-default argument follows default argument
Ist OK, wie erwartet.
Jedoch, was der Fall ist, wenn ich will, dass die erste argument sollte die default -? Wie zum Beispiel, wie sich aus dem obigen code x
werden die ersten argument und es sollte einen Standardwert von 0.
Ist es möglich, dies zu tun? Ich Frage, weil auch in der range
- Funktion, ich vermute, es ist so etwas wie dieses:
def range(start=0, end):
pass
Also wie wird das gemacht und wenn es nicht möglich ist, wie wird dies implementiert, indem range
? Beachten Sie, dass ich darauf bestanden habe, auf das erste argument auf Standard, das ist der ganze Punkt. Ich bin mit range
als ein Beispiel, weil es passt mein problem perfekt. Natürlich könnte man implementieren range
als def range(end, start=0)
aber das ist nicht der Punkt.
InformationsquelleAutor der Frage user225312 | 2010-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut,
range
ist C-code, der dies etwas besser. Sowieso, Sie können dies tun:Dokument und der Funktion entsprechend.
InformationsquelleAutor der Antwort Jochen Ritzel
Ist es nicht implementiert
range
. Sie können*args
oder**args
und Behandlung der Tupel oder das dict, wie Sie wollen. Zum Beispiel:InformationsquelleAutor der Antwort khachik
Gibt es ein paar Ansätze. Der erste würde sein, wechseln Sie die Argumente in der Funktion, ob einige der Argumente sind "Keine". Das würde genauso funktionieren.
Die andere primäre Methode wäre, um Ihre Funktion erhalten Sie eine Liste aller Argumente, die es erhält. Dann kann er entscheiden, was zu tun ist, basierend auf der Anzahl der Argumente.
Die Dritte sein würde, Benutzer zu motivieren, pass benannte Argumente, um Ihre Funktion, das macht die Ordnung weniger wichtig.
Dann Benutzer es nennen würde, mit dem start-argument, wenn Sie wollte etwas anderes außer 0. (Obwohl das benannte argument wäre nicht erforderlich, es hält den code übersichtlich.
InformationsquelleAutor der Antwort Peter Shinners
Können Sie die Ausnahmen behandeln, die sich, wenn Sie wirklich wollen, dass
InformationsquelleAutor der Antwort Vince Spicer
Ich habe nicht den code für das Angebot, aber ich bin sicher, es führt diese Art von trick:
edit: Code korrigiert pro martineau ' s Kommentar.
InformationsquelleAutor der Antwort Steven Rumbalski