Поскольку я не вижу простого варианта xor, использующего переменные аргументы и только операции со значениями True, True или False, я просто брошу его здесь для любого использования.
Это, как отмечают другие, довольно (если не сказать очень) просто.
def xor(*vars):
sum = bool(False)
for v in vars:
sum = sum ^ bool(v)
return sum
И использование также просто:
if xor(False, False, True, False):
print "Hello World!"
Поскольку это обобщенный n-арный логический XOR, его значение истины будет True, когда число операндов True нечетно (и не только, когда ровно один равен True, это только один случай, когда n-арный XOR True).
Таким образом, если вы ищете n-арный предикат, который имеет значение True только тогда, когда точно один из его операндов, вы можете использовать:
def isOne(*vars):
sum = bool(False)
for v in vars:
if sum and v:
return False
else:
sum = sum or v
return sum