Если вам требуется проверить, что был передан строго один из двух (и более) аргументов, то стоит использовать “Исключающее или” (XOR), что в Python реализуется достаточно просто:
def is_just_one_from_two(el_1=None, el_2=None):
if bool(el1) == bool(el2):
print("There are just one element")
is_just_one_from_two(el_1 = "val1", el_2 = "val2") # -> False
is_just_one_from_two(el_1 = None, el_2 = None) # -> False
is_just_one_from_two(el_1 = "val1", el_2 = None) # -> True
is_just_one_from_two(el_1 = None, el_2 = "val2") # -> True
Таблица истинности многое проясняет, если посмотреть внимательно:
a | b | a xor b |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Где это может пригодиться? Как правило, данная проверка необходима в случаях, когда вы можете в качестве входных данных принять первое или второе значение и работать с ним, но когда на вход поступает сразу два значения, нужно либо выбрать одно из них, либо сообщить о проблеме, и если выбирать одно из значений будет некорректно, то XOR позволит провести нужную проверку.