Как узнать был ли передан именованный аргумент со значением, совпадающим со значением по умолчанию

Есть небольшая функция:

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 ситуации вызова этой функции:

  1. foo(1, 2)
  2. foo(1, 2, unique=True)
  3. foo(1, 2, unique=False)
  • Первый и второй случаи работают и печатают строку которой была вызвана функция в коде:
  1. foo(1, 2) выводит 'foo(1, 2)'
  2. foo(1, 2, unique=True) выводит 'foo(1, 2, unique=True)'
  • а для 3-го случая:
  1. foo(1, 2, unique=False) выводит 'foo(1, 2)', когда желаемый вывод 'foo(1, 2, unique=False)'

Ответы (0 шт):