Skip to content

Effortlessly Use `or` in Python

Using the “or” Boolean Operator in Python

Boolean Logic

Boolean logic is the foundation of digital logic in computer hardware and programming languages. It revolves around the truth value of expressions and objects, determining whether they are true or false. The three fundamental Boolean operators in Python are and, or, and not. These operators allow you to create Boolean expressions that evaluate to true or false.

The Python Boolean Operators

In Python, and, or, and not are the Boolean operators used to test conditions and control the flow of execution in programs. In this tutorial, we’ll focus on the or operator and explore how it works in different contexts.

How the Python or Operator Works

The or operator in Python returns True if at least one of the operands is true. It evaluates the operands from left to right and stops as soon as it finds a true value. If none of the operands are true, the or operator returns False. Let’s dive into some examples to understand its functionality.

Using or with Boolean Expressions

a = True
b = False
c = a or b
print(c) # Output: True

In this example, the or operator is used to combine two Boolean variables a and b. Since a is true, the or operator short-circuits and returns True. It doesn’t evaluate the value of b because the or operator only needs one true operand to return True.

Using or with Common Objects

x = 10
y = 20
z = x or y
print(z) # Output: 10

The or operator can also work with non-Boolean objects. In this example, the operands x and y are integers. The or operator returns the first true operand encountered, so it returns x (which is 10) in this case.

Mixing Boolean Expressions and Objects

a = True
x = 10
z = a or x
print(z) # Output: True

The or operator is versatile and can handle a mix of Boolean expressions and objects. In this example, one operand is a Boolean variable a, and the other is an integer x. Since a is true, the or operator returns True without evaluating the value of x.

Short-Circuit Evaluation

The or operator in Python uses short-circuit evaluation. It stops evaluating the operands as soon as it encounters the first true value. This behavior improves performance and efficiency in certain scenarios by avoiding unnecessary evaluations.

Section Recap

In this section, we explored how the or operator works in different contexts, including Boolean expressions and objects. We also learned about short-circuit evaluation, which allows the or operator to stop evaluating operands once it finds a true value.

Boolean Contexts

Boolean contexts refer to situations where Python expects an expression to evaluate to a Boolean value, such as if statements and while loops. In these contexts, you can use any expression or object, and Python will determine its truth value. Let’s consider some examples.

Using or in if Statements

x = 5
if x or y:
print("At least one of the operands is true")
print("Both operands are false")

In this example, the or operator combines the variables x and y inside the if statement. If either x or y is true, the code inside the if block will execute. Otherwise, the code inside the else block will execute.

Using or in while Loops

x = 10
while x > 5 or x < -5:
x -= 1

The while loop in this example continues executing as long as x is greater than 5 or less than -5. The or operator allows us to combine two conditions and control the flow of the loop accordingly.

Non-Boolean Contexts

Apart from Boolean contexts, you can also use the or operator in non-Boolean contexts. Although the primary purpose of or is to evaluate Boolean expressions, it can be useful in other scenarios as well.

Default Values for Variables

x = None
y = "Default Value"
result = x or y
print(result) # Output: Default Value

In this example, the or operator is used to assign the default value to the variable result. If x is a falsy value (like None), the or operator returns the second operand, which is "Default Value". On the other hand, if x is a truthy value, the or operator returns x itself.

Default Return Values

def divide(a, b):
return b or "Cannot divide by zero"
result = divide(10, 2)
print(result) # Output: 2
result = divide(10, 0)
print(result) # Output: Cannot divide by zero

In this example, the or operator is used to handle the case when the divisor b is zero. If b is zero, the or operator returns the second operand, which is the error string "Cannot divide by zero". Otherwise, it returns b, allowing the division operation to proceed.

Mutable Default Arguments

def add_item(item, lst=None):
if lst is None:
lst = []
return lst
result = add_item("apple")
print(result) # Output: ["apple"]
result = add_item("banana")
print(result) # Output: ["banana"]

In this example, the or operator is used to set a default value for the mutable lst argument. If the argument is not provided or is None, the or operator returns an empty list, effectively creating a new list for each function call.

Zero Division

x = 10
y = 0
z = x y if y else 0
print(z) # Output: 0

Instead of using or directly, we can achieve similar functionality by using the conditional expression (if and else). In this example, the or operator is simulated by checking if y is truthy or falsy. If y is zero (falsy), the expression evaluates to 0, preventing a zero division error.

Multiple Expressions in lambda

add = lambda a, b: a + b
add_or_zero = lambda a, b: (a or 0) + (b or 0)
print(add_or_zero(10, 20)) # Output: 30
print(add_or_zero(None, 20)) # Output: 20
print(add_or_zero(10, None)) # Output: 10
print(add_or_zero(None, None)) # Output: 0

The or operator can also be used within lambda functions to handle possible None values or other falsy values. In this example, the add_or_zero lambda function adds two numbers while handling cases where either or both of the numbers are falsy values.


In this tutorial, we explored the or operator in Python and learned how to use it in Boolean and non-Boolean contexts. We saw how the or operator works with Boolean expressions and common objects, as well as its role in short-circuit evaluation. We also discussed Boolean contexts such as if statements and while loops, and explored non-Boolean contexts where the or operator can be helpful. Mastering the or operator will allow you to write more expressive and efficient code in Python.