___ answer22391787 ___
Es ist nicht möglich:
Dies kann explizit in den Dokumenten gefunden werden :
Der Ausdruck x oder y wertet zuerst x aus; Wenn x wahr ist, ist sein Wert
ist zurückgekommen; Andernfalls wird y ausgewertet und der resultierende Wert ist
zurückgegeben.
Sie existiert nicht als or
-Funktion, da sie aufgrund der Sprachspezifikation nicht implementiert werden kann, da Sie die Ausführung eines aufgerufenen Arguments beim Aufruf der Funktion nicht verzögern können. Hier ist ein Beispiel für or
in Aktion:
%Vor%
Wenn Balken aufgerufen wird, erhalten wir einen Laufzeitfehler. Und wenn wir uns die folgende Zeile ansehen, sehen wir, dass Python die Auswertung der Zeile verkürzt, da or
einen or
-ish Wert zurückgibt.
%Vor%
Wir können approximieren:
Wir können dieses Verhalten simulieren, indem wir nicht aufgerufene Funktionen übergeben und sie dann in unserer Funktion operator
aufrufen:
%Vor%
Aber Sie können nicht die Ausführung von callables ausführen, die an eine Funktion übergeben werden:
%Vor%
Es wäre also unpassend, eine solche Funktion in die eingebaute oder Standard-Bibliothek aufzunehmen, da Benutzer erwarten würden, dass eine %code% -Funktion nur als boolescher %code% -Test funktioniert, was wiederum unmöglich ist.
___ antwort22385936 ___
Einer integrierten %code% -Funktion am nächsten kommt any :
%Vor%
Wenn Sie die Funktionalität von %code% für die Rückgabe von nicht booleschen Operanden kopieren möchten, können Sie verwenden nächste mit einem Filter:
%Vor%
Aber wie Martijn sagte, sind auch keine echten Drop-In-Ersatz für %code% , weil es kurzschließt. Eine echte %code% -Funktion müsste Funktionen akzeptieren, um die Auswertung aller Ergebnisse vermeiden zu können:
%Vor%
Dies ist etwas unhandlich und würde mit dem Rest des Moduls %code% inkonsistent sein, daher ist es wahrscheinlich das Beste, dass es weggelassen wird und Sie stattdessen andere explizite Methoden verwenden.
___ answer22385604 ___
Der Grund, warum Sie %code% nach Ausführung von %code% erhalten, ist, weil %code% ist %code% , so dass der Ausdruck erfüllt wurde.
Es könnte mehr Sinn ergeben, wenn Sie %code% ausführen. Es gibt %code% zurück, weil die erste Anweisung %code% oder %code% ist, damit die zweite Anweisung ausgewertet wird. In diesem Fall wird %code% zu einem %code% booleschen Wert ausgewertet.
Die Operatoren %code% und %code% werten den ersten Wert aus und stopfen das Ergebnis dann in die Wahrheitstabelle "AND und OR". Im Fall von %code% wird der zweite Wert nur berücksichtigt, wenn der erste Wert auf %code% lautet. Im Falle des Operators %code% , wenn der erste Wert zu %code% ausgewertet wird, ist der Ausdruck wahr und kann zurückgeben, wenn nicht der zweite Wert ausgewertet wird.
___ tag123operators ___ Operatoren sind Symbole, die in fast allen Programmier- und Codierungssprachen vorkommen, um Berechnungen und Vergleiche von Daten durchzuführen.
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend.
___ qstnhdr ___ python oder auf Bedienermodul [duplizieren]
___ answer22385169 ___
Die %code% operator Kurzschlüsse ; Der rechte Ausdruck wird nicht ausgewertet, wenn die linke Hand einen wahren Wert zurückgibt. Dies gilt auch für den Operator %code% . Wenn der Ausdruck auf der linken Seite einen falschen Wert zurückgibt, wird der Ausdruck auf der rechten Seite nicht ausgewertet.
Das konnte man nicht mit einer Funktion machen; Alle Operanden müssen ausgewertet werden, bevor die Funktion aufgerufen werden kann. Daher gibt es keine entsprechende Funktion für das Modul %code% .
Vergleiche:
%Vor%
mit
%Vor%
Der letzte Ausdruck schlägt fehl, weil Sie %code% nicht als aufrufbar verwenden können. Die erste Version funktioniert, weil der Operator %code% den Ausdruck %code% nicht auswertet.
___ qstntxt ___
Im Modul %code% haben wir die Funktion %code% , die bitweise oder ( %code% ).
Ich kann jedoch nicht das logische oder ( %code% ) finden.
Die Dokumentation scheint sie nicht aufzulisten .
Ich frage mich, warum ist es nicht enthalten? Ist es nicht ein Operator?
Gibt es eine eingebaute Funktion, die ihr Verhalten bereitstellt?
___