Как узнать был ли передан именованный аргумент со значением, совпадающим со значением по умолчанию
Есть небольшая функция:
def foo(*args, unique=False):
output_str = 'foo('
for i in range(len(args)):
output_str = output_str + str(args[i])
if i != len(args) - 1:
output_str = output_str + ', '
if unique and args:
output_str = output_str + ', unique=True'
elif unique and not args:
output_str = output_str + 'unique=True'
output_str = output_str + ')'
print(output_str)
Мне нужно узнать, был ли передан аргумент unique=False или было использовано значение по умолчанию (идентичное тому, что могли передать) чтобы вывести строку подобную строке которой была вызвана функция. Например, возможны 3 ситуации вызова этой функции:
- foo(1, 2)
- foo(1, 2, unique=True)
- foo(1, 2, unique=False)
- Первый и второй случаи работают и печатают строку которой была вызвана функция в коде:
foo(1, 2)выводит 'foo(1, 2)'foo(1, 2, unique=True)выводит 'foo(1, 2, unique=True)'
- а для 3-го случая:
foo(1, 2, unique=False)выводит 'foo(1, 2)', когда желаемый вывод 'foo(1, 2, unique=False)'