Difference between \'and\' and \'&\' in Python

In Python 'and' and '&' both are used to perform logical operations, but they work differently. The and operator performs logical AND operations, while the & operator performs bitwise AND operations. Understanding their differences is crucial for writing correct Python code.

Key Differences

Feature and operator & operator
Purpose Logical operations Bitwise operations
Return Type Boolean or operand value Integer value
Evaluation Short-circuit evaluation Evaluates all operands
Operation Level Works on truthiness Works on binary representation

The 'and' Operator

The and operator performs logical AND operations between expressions. It uses short-circuit evaluation, meaning if the first operand is falsy, it returns that value without evaluating the second operand.

Example

Here's how logical AND works with different data types ?

# Boolean values
print(True and False)
print(True and True)

# Numeric values (0 is falsy, non-zero is truthy)
x = 5
y = 10
print(x > 0 and y > 0)

# Short-circuit behavior
print(0 and print("This won't execute"))
print(5 and "Second operand")

The output of the above code is ?

False
True
True
0
Second operand

The '&' Operator

The & operator performs bitwise AND operations on the binary representation of numbers. It compares each bit position and returns 1 only when both bits are 1.

Example

Here's how bitwise AND works with binary representations ?

# Bitwise AND operation
x = 5  # Binary: 101
y = 3  # Binary: 011
result = x & y  # Result: 001 (which is 1 in decimal)
print(f"{x} & {y} = {result}")

# Another example
a = 12  # Binary: 1100
b = 10  # Binary: 1010
result2 = a & b  # Result: 1000 (which is 8 in decimal)
print(f"{a} & {b} = {result2}")

# Binary representation visualization
print(f"Binary of {x}: {bin(x)}")
print(f"Binary of {y}: {bin(y)}")
print(f"Binary of result: {bin(result)}")

The output of the above code is ?

5 & 3 = 1
12 & 10 = 8
Binary of 5: 0b101
Binary of 3: 0b011
Binary of result: 0b1

Common Mistakes

Using & instead of and in conditional statements can lead to unexpected results ?

# Wrong: Using & for logical operations
x = 5
y = 0
try:
    if x > 0 & y > 0:  # This is bitwise, not logical!
        print("Both positive")
    else:
        print("Not both positive")
except TypeError as e:
    print(f"Error: {e}")

# Correct: Using 'and' for logical operations
if x > 0 and y > 0:
    print("Both positive")
else:
    print("Not both positive")

The output of the above code is ?

Error: '>' not supported between instances of 'int' and 'bool'
Not both positive

Conclusion

Use and for logical operations when you need boolean logic and short-circuit evaluation. Use & for bitwise operations when working with binary data or performing bit-level manipulations. Choosing the correct operator prevents logical errors and ensures your code behaves as expected.

Updated on: 2026-03-27T01:07:00+05:30

6K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements