Wenn Sie die Signatur von Python eingebauten in sorted()
Funktion wie folgt prüfen:Warum sortiert() 's Schlüsselparameter erfordern ein Schlüsselwort-Argument
import inspect
print(inspect.signature(sorted))
Die Signatur ist: (iterable, key=None, reverse=False)
.
Basierend auf meinem Verständnis von Positions- und optionalen Argumenten here erworben, würde es scheinen, wie Sie ein iterable
Argument liefern könnten und dann ein key
Argument ohne ein Schlüsselwort key=
für das key
Argument zu benötigen. Sie müssen jedoch immer key=
angeben, wenn Sie ein key
Argument übergeben. Warum das?
Ich verstehe, dass, wenn man wollte reverse=True
angeben, aber ohne key
Argument, würden Sie ein Schlüsselwort dafür brauchen, aber ich verstehe nicht, warum Sie key=
angeben müssen würde, wenn Sie eine key
Bereitstellung .
Dank anzuzeigen, dass Thread viele meiner Verwirrung anspricht. –
Eigentlich bin ich jetzt eher verwirrt. Warum funktioniert die Funktion nicht so, wie die aktuelle Signatur sagt? Was bringt es, die Funktion nur mit Argumenten mit Schlüsselwörtern arbeiten zu lassen? –
@ user123123123: 'sorted' und' list.sort' verwendet, um ein 'cmp'-Argument zu nehmen. Wenn das entfernt wurde, half das 'key'- und' reverse'-Schlüsselwort - nur der Übergang, indem es klarere Fehler für Code gab, der immer noch versucht, 'cmp' zu verwenden. Außerdem erleichtert es zukünftige Änderungen an der Schnittstelle und Sie müssen sich nicht daran erinnern, in welcher Reihenfolge die Argumente eingehen. – user2357112