Die Dokumentation für die integrierten Funktionen max
und min
in Python zeigt an, dass der Parameter key
wie in der Funktion sort
funktionieren sollte. Mit anderen Worten, ich sollte das tun können:
Dies führt jedoch zu einem Fehler:
TypeError: 'NoneType' object is not callable
Aber wenn ich etwas Ähnliches mit der Funktion sort
mache, bekomme ich die erwarteten Ergebnisse:
Es wird kein Fehler generiert und die Standardsortierung wird verwendet. Mehrere Bücher implizieren auch, dass ich mit dem gleichen Verhalten in den Funktionen max
und min
davonkommen könnte. Siehe diesen Auszug aus Python in Kürze .
Ist dies wirklich das Standardverhalten der Funktionen max
und min
? Sollte es sein? Sollten sie nicht mit der Sortierfunktion übereinstimmen?
Sie sind auf einen Unterschied in der Implementierung von .sort
und max
mehr gestoßen als ein Problem mit der Sprache.
list.sort()
verwendet ein Schlüsselwortargument "key", das standardmäßig auf None festgelegt wird. Das bedeutet, dass die sort-Methode nicht unterscheiden kann, ob Sie ein key=None
-Argument angeben oder nur den Standardwert übernehmen. In jedem Fall verhält es sich, als ob keine Schlüsselfunktion bereitgestellt wurde.
max
prüft andererseits auf das Vorhandensein eines Schlüsselwortarguments "Schlüssel". Es hat keinen Standardwert und sein Wert wird als Schlüsselfunktion verwendet, falls überhaupt vorhanden.
In beiden Fällen sollte der Schlüssel niemals als "Keine" bereitgestellt werden. Es soll eine Funktion sein, die verwendet wird, um einen "Schlüssel" -Wert aus den Elementen in der Liste / iterierbar zu extrahieren. Zum Beispiel:
%Vor% @ Davids Antwort ist perfekt. Fügen Sie einfach hinzu, falls Sie sich fragen, der Standardwert key
(sowohl in sort
als auch in max
/ min
Funktionen) ist etwas wie:
Tags und Links python