Wenn Sie eine if-Anweisung haben, in der mehrere Variablen oder Funktionen ausgewertet werden, in welcher Reihenfolge werden sie ausgewertet?
%Vor% In diesem speziellen Fall wird foo gegen die fünf und dann gegen die 6 (von links nach rechts) bewertet oder wird es von rechts nach links ausgewertet? Ich gehe davon aus, dass ein or
und and
in der gleichen Reihenfolge ausgewertet wird.
Die linke Klausel wird zuerst ausgewertet und dann die rechte Klausel, wenn die erste Klausel False
ist.
Aus diesem Grund können Sie Dinge wie:
tun %Vor%Ohne es zu brechen.
Umgekehrt wird mit einer and
-Klausel die rechte Klausel nur ausgewertet, wenn die erste% code_% ist:
Andernfalls würde eine Ausnahme ausgelöst, wenn True
ist person
.
Um die Erklärung von Blender etwas weiter zu erweitern, hat der Operator or
etwas anderes eingebaut:
Dies wird expression A
zuerst auswerten; Wenn der Wert True
lautet, wird expression A
vom Operator zurückgegeben. So liefert 5 or <something>
5
als 5
ergibt True
.
Wenn expression A
zu False
auswertet, wird expression B
zurückgegeben. So wird 0 or 5
5
zurückgeben, weil 0
zu False
auswertet.
Natürlich können Sie das beliebig verketten:
%Vor% Im Allgemeinen gibt or
den ersten Ausdruck zurück, der zu True
ausgewertet wird, aber seinen ursprünglichen Wert behält. Wenn es keinen Ausdruck gibt, der True
ergibt, gibt er einfach den letzten Ausdruck zurück (der zu False
auswertet).
Der Operator and
arbeitet ähnlich, aber umgekehrt. Es gibt den ersten Ausdruck zurück, der auf False
auswertet, aber seinen ursprünglichen Wert behält. Wenn es keinen Ausdruck gibt, der False
ergibt, gibt er einfach den letzten Ausdruck zurück (der auf True
auswertet).
Als Beispiel geben sowohl 0 and 5
als auch 5 and 0
0
zurück, weil 0
zu False
auswertet, aber 2 and 3
gibt 3
zurück, weil 3
der letzte Ausdruck ist und alles auswertet zu True
.
In irgendeiner Weise (um auf die Frage zurückzukommen): Alle Ausdrücke werden von links nach rechts ausgewertet, und wenn eine Regel von oben dies erlaubt, werden weitere Ausdrücke nicht berührt.
Tags und Links python