5 Best Ways to Check If a Variable Is a Boolean in Python

πŸ’‘ Problem Formulation:

In Python, it is often necessary to determine if a variable is of a Boolean type (True or False). This task is crucial, especially when validating inputs or before performing boolean-specific operations. The goal is to take a variable and accurately ascertain whether its value is a boolean. For instance, given the input True, the desired output is a confirmation that it is a Boolean value.

Method 1: Using the isinstance() Function

The isinstance() function in Python is designed to check if an object is an instance of a particular class or a subclass thereof. This method is straightforward and is widely used to ensure that a variable is indeed a boolean.

Here’s an example:

my_var = True
is_bool = isinstance(my_var, bool)
print(is_bool)

Output: True

The example checks if my_var is of type Boolean using the isinstance() function. It prints out True since my_var is a boolean value.

Method 2: Comparing Type Directly

This method involves direct comparison of the variable’s type with the bool type. It is a simple and explicit approach to determine if a variable is a Boolean.

Here’s an example:

my_var = False
is_bool = type(my_var) == bool
print(is_bool)

Output: True

In the snippet, it directly compares the type of my_var with bool to deduce if my_var is a Boolean, which in this case, it is.

Method 3: Using a Custom Function

Creating a custom function can provide a reusable way to check for Boolean types. This methodology allows encapsulation and can make the code more readable.

Here’s an example:

def is_boolean(var):
    return type(var) == bool

my_var = 'True'
print(is_boolean(my_var))

Output: False

The custom function is_boolean() checks if the passed variable is a Boolean. In this case, my_var is a string, not a Boolean, so the function returns False.

Method 4: Using the type() Function with __name__ Attribute

The __name__ attribute of a type object returns the class name of an argument. This method is more explicit and less commonly used but still effective for type checking.

Here’s an example:

my_var = 1 == 1
is_bool = (type(my_var).__name__ == 'bool')
print(is_bool)

Output: True

The code snippet uses the __name__ attribute of the type object of my_var to check if it is ‘bool’. As the comparison 1 == 1 yields a Boolean, it returns True.

Bonus One-Liner Method 5: Using the all() function in a one-liner

The all() function combined with a generator expression can be used in a clever one-liner to check for a Boolean value.

Here’s an example:

my_var_list = [True, False, True]
are_bools = all(isinstance(x, bool) for x in my_var_list)
print(are_bools)

Output: True

By combining isinstance() with the all() function in a generator expression, it confirms if all items in my_var_list are Booleans.

Summary/Discussion

  • Method 1: isinstance() Function. Simple and widely used. Can check for subclass instances, which can sometimes be an unintended consequence.
  • Method 2: Comparing Type Directly. Explicit and simple. Does not account for subclassing, which might be desired in some cases.
  • Method 3: Using a Custom Function. Offers reusability and readability. Not as concise for a one-time check.
  • Method 4: type() Function with __name__. Explicit class name checking, which can be clear but verbose for some.
  • Bonus Method 5: Using the all() function in a one-liner. Best for checking multiple variables at once. Not suitable for single-variable checks.