und ist ein logisches UND, das True zurückgibt, wenn beide Operanden true sind, während '&' in Python ein bitweiser Operator ist, der auf Bits einwirkt und eine bitweise Operation ausführt.

Hinweis: Wenn ein ganzzahliger Wert 0 ist, wird er als logisch betrachtet, andernfalls als wahr, wenn er logisch verwendet wird.

Beispiel:

  
a = 14
b = 4
  
print(b and a) 
print(b & a) 

Ausgabe:

14
4

Dies liegt daran, dass 'und' testen, ob beide Ausdrücke logisch wahr sind, während '&' eine bitweise UND-Operation für das Ergebnis beider Anweisungen ausführt.



In der Druckanweisung 1 prüft der Compiler, ob die erste Anweisung True ist. Wenn die erste Anweisung False ist, wird die zweite Anweisung nicht überprüft und sofort False zurückgegeben. Dies wird als "faule Bewertung" bezeichnet . Wenn die erste Anweisung True ist, wird die zweite Bedingung überprüft und gemäß den Regeln der UND-Operation ist True nur dann das Ergebnis, wenn beide Anweisungen True sind. Im Fall des obigen Beispiels überprüft der Compiler die erste Anweisung, die wahr ist, da der Wert von b 4 ist, und der Compiler bewegt sich in Richtung der zweiten Anweisung, die ebenfalls wahr ist, weil der Wert von a 14 ist. Daher ist die Ausgabe auch 14.

In print-Anweisung 2 führt der Compiler die Ergebnisse von Anweisungen bitweise und operativ aus. Hier wird die Anweisung wie folgt ausgewertet:
Der Wert von 4 in Binär ist 0000 0100 und der Wert von 14 in Binär ist 0000 1110. Bei bitweiser Ausführung erhalten wir -

0000 0100
   & = 0000 0100 = 4
0000 1110

Daher ist die Ausgabe 4.

Um dies näher zu erläutern, können wir ein anderes Beispiel nehmen.

Beispiel:

  
a, b = 9, 10
print(a & b)
print(a and b)

Ausgabe:

8
10

Die erste Zeile führt bitweises UND für a und b aus und die zweite Zeile wertet die Anweisung im Druck und die Druckantwort aus.
In Zeile 1 ergibt a = 1001, b = 1010, Durchführen von & an a und b 1000, was der Binärwert des Dezimalwerts 8 ist.
In Zeile 2 wertet der Ausdruck 'a und b' zuerst a aus; Wenn a False (oder Zero) ist, wird sein Wert aufgrund der oben erläuterten „Lazy Evaluation“ sofort zurückgegeben, andernfalls wird b ausgewertet. Wenn b ebenfalls ungleich Null ist, wird der resultierende Wert zurückgegeben. Der Wert von b wird zurückgegeben, da dies der letzte Wert ist, bei dem die Überprüfung auf Richtigkeit der Aussage endet.
Daher wird die Verwendung von Boolean und 'und' in einer Schleife empfohlen.