*аргументы для сбора всех переданных аргументов. Поскольку аргументы поступают в виде кортежа, мы можем обрабатывать произвольное число аргументов с целью сбора элементов, имеющихся во всех операндах:def foo(*args):
res = []
for x in args[0]: # Просмотр последовательности
if x in res: continue # Пропуск дубликатов
for other in args[1:]: # Для всех остальных аргументов
if x not in other: break # Элемент находится во всех последовательностях?
else: # Нет: выйти из цикла
res.append(x) # Да: добавить в конец
return res
lst = (1, 3, 4, 3, 5)
print(foo(lst)) # [5]
В данном случае все сводится к блоку
else (выходу из цикла) и добавлению последнего элемента в res.Если подавать функции, например, два кортежа, результат будет другим:
lst = ((1, 3, 4), (3, 4, 5))
print(foo(lst)) # [(3, 4, 5)]