and is a Logical AND that returns True if both the operands are true whereas ‘&’ is a bitwise operator in Python that acts on bits and performs bit by bit operation.
When an integer value is 0, it is considered as False when using logically.
This is because ‘and’ tests whether both expressions are logically True while ‘&’performs bitwise AND operation on the result of both statements.
In print statement 1, compiler checks if the first statement is True. If the first statement is False, it does not check the second statement and returns False immediately. This is known as “lazy evaluation”. If the first statement is True then the second condition is checked and according to rules of AND operation, True is the result only if both the statements are True.
In print statement 2, the compiler is doing bitwise & operation of the results of statements. Here, the statement if getting evaluated as follows:
(year%100==0 or year%400==0)
year%100 = 92, which is a true value. Because only one True value is enough to return a True value, the statement will not be checked further, hence the result of this will be 92.
next, (year%4==0 & 92) will be evaluated.
year%4==0 = 0
(0 & 92) ==> 0000000 & 1011100 ==> 1011100 ==>92, which is a True value because it is non zero value.
Hence the result will be True.
To elaborate on this, we can take another example.
The first line is performing bitwise AND on a and b and the second line is evaluating the statement inside print and printing answer.
In line 1, a = 1001, b = 1010, Performing & on a and b, gives us 1000 which is the binary value of decimal value 8.
In line 2, the expression ‘a and b’ first evaluates a; if a is False (or Zero), its value is returned immediately because of “lazy evaluation” explained above, else, b is evaluated. If b is also non-zero then the resulting value is returned. The value of b is returned because it is the last value where checking ends for the truthfulness of the statement.
Hence the use of boolean and ‘and’ is recommended in a loop.
- Python set operations (union, intersection, difference and symmetric difference)
- Difference between Python and C#
- Difference between C and Python
- Python Set | difference()
- Difference between Python and C++
- Difference Between x = x + y and x += y in Python
- Difference between Python and Java
- Difference between == and is operator in Python
- Python | Difference between two lists
- Difference Between Python and Bash
- Difference between dir() and vars() in Python
- Difference Between '+' and 'append' in Python
- Difference between various Implementations of Python
- Difference between Method and Function in Python
- Python | Difference Between List and Tuple
- Python | Difference in keys of two dictionaries
- Python - Sort Dictionary by Value Difference
- Difference between List VS Set VS Tuple in Python
- Python | Pandas TimedeltaIndex.difference
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.
Improved By : shrishti_m180521ca