Ich möchte eine Funktion in Python schreiben, die eine Scheibe als Parameter nimmt. Idealerweise würde ein Benutzer in der Lage sein, die Funktion aufzurufen, wie folgt:Wie schreibe ich eine Funktion, die eine Scheibe nimmt?
foo(a:b:c)
Leider ist diese Syntax nicht von Python zulässig ist - die Verwendung von a:b:c
nur innerhalb []
erlaubt ist, nicht ()
.
Ich sehe daher drei Möglichkeiten für meine Funktion:
den Benutzer erfordern eine Scheibe "Konstruktor" zu verwenden (wo
s_
wirkt wie the version provided by numpy):foo(slice(a, b, c)) foo(s_[a:b:c])
Setzen Sie die Logik Meine Funktion in eine
__getitem__
Methode:foo[a:b:c]
Aufgeben versuchen, ein Stück zu nehmen und nehmen starten, zu stoppen und individuell Schritt:
foo(a, b, c)
Gibt es eine Möglichkeit die ursprüngliche Syntax zur Arbeit zu kommen? Wenn nicht, welche der Workaround-Syntax wäre zu bevorzugen? Oder gibt es eine andere, bessere Option?
Ich Verwendung Start verwenden würde, stoppen und Einstellschritt Standard Werte –
Wie basiert das hauptsächlich auf Meinungen? Dies ist eine vollständig gültige Frage. –
Ich sehe überhaupt keinen Nachteil darin, 'foo (a, b, c)' anstelle von 'foo (a: b: c)' zu verwenden. – TigerhawkT3