other = s or "some default value"
Ok, es muss geklärt werden, wie die or
Betreiber arbeitet. Er ist ein boolescher Operator, funktioniert also in einem booleschen Kontext. Wenn die Werte nicht boolesch sind, werden sie für die Zwecke des Operators in boolesch umgewandelt.
Beachten Sie, dass die or
Operator gibt nicht nur True
o False
. Stattdessen wird der erste Operand zurückgegeben, wenn der erste Operand als wahr ausgewertet wird, und der zweite Operand, wenn der erste Operand als falsch ausgewertet wird.
In diesem Fall wird der Ausdruck x or y
gibt zurück. x
wenn es sich True
oder wird bei der Umwandlung in einen booleschen Wert als wahr ausgewertet. Andernfalls gibt er y
. In den meisten Fällen erfüllt dies den gleichen Zweck wie der Null-Koalitionsoperator von C, aber denken Sie daran:
42 or "something" # returns 42
0 or "something" # returns "something"
None or "something" # returns "something"
False or "something" # returns "something"
"" or "something" # returns "something"
Wenn Sie Ihre Variable verwenden s
um etwas zu halten, das entweder ein Verweis auf die Instanz einer Klasse ist oder None
(solange Ihre Klasse keine Mitglieder definiert __nonzero__()
y __len__()
), ist es sicher, die gleiche Semantik wie der Null-Koalitionsoperator zu verwenden.
Es kann sogar nützlich sein, diesen Nebeneffekt von Python zu haben. Da Sie wissen, welche Werte zu false ausgewertet werden, können Sie dies nutzen, um den Standardwert auszulösen, ohne dass Sie None
(z.B. ein Fehlerobjekt).
In einigen Sprachen wird dieses Verhalten als Elvis Betreiber .