# How do you get the logical xor of two variables in Python?

## How do you get the logical xor of two variables in Python?

If youre already normalizing the inputs to booleans, then != is xor.

How do you get the logical xor of two variables in Python?

``````bool(a) != bool(b)
``````

You can always use the definition of xor to compute it from other logical operations:

``````(a and not b) or (not a and b)
``````

But this is a little too verbose for me, and isnt particularly clear at first glance. Another way to do it is:

``````bool(a) ^ bool(b)
``````

The xor operator on two booleans is logical xor (unlike on ints, where its bitwise). Which makes sense, since `bool` is just a subclass of `int`, but is implemented to only have the values `0` and `1`. And logical xor is equivalent to bitwise xor when the domain is restricted to `0` and `1`.

So the `logical_xor` function would be implemented like:

``````def logical_xor(str1, str2):
return bool(str1) ^ bool(str2)
``````

#### How do you get the logical xor of two variables in Python?

How do you get the logical xor of two variables in Python?

Bitwise exclusive-or is already built-in to Python, in the `operator` module (which is identical to the `^` operator):

``````from operator import xor
xor(bool(a), bool(b))  # Note: converting to bools is essential
``````

Related posts