Вы, кажется, задаете 2 вопроса одновременно.
- Чтобы иметь несколько различных входных данных
- Чтобы получить эксклюзив или
Первая часть получается с использованием подстановочного аргумента и добавлением возможного ключевого аргумента послеit
def fun(*args, arg1=None, arg2=None):
print(arg1, arg2)
Теперь я могу вызывать функцию с любым из двух желаемых аргументов ключевого слова. Обратите внимание, что я должен определить аргументы ключевого слова arg1 и arg2, если я хочу добавить any значения для них.
Например:
fun() # None None
fun(arg1=1) # 1 None
fun(arg2=2) # None 2
fun(arg1=3, arg2=4) # 3, 4
# Calls without keyword are stored inside args
fun(1) # None None
Во второй части мы можем распаковать оператор xor в исходную форму '(a, а не b) или (не aи б) '
Затем мы получим следующий код и протестируем.
def fun(*args, arg1=None, arg2=None):
print(arg1, arg2)
if (arg1 and not arg2) or (not arg1 and arg2):
print(arg1, arg2)
return
return "Error"
fun() # None None
fun(1) # None None
fun(arg1=1) # 1 None
fun(arg2=2) # None 2
fun(arg1=3, arg2=4) # 3 4
Я предполагаю, что arg1 и arg2 содержат некоторые значения, которые не преобразуются в логическое значение False,Если это так, вам нужно добавить проверку «Нет», чтобы избежать ошибок.