Допустим, есть функция: def function1(a, b=«hello»). Мы можем её вызывать function1(1, «world») или function1(2), или function1(3, «hello»).
Как узнать, b == «hello» из-за подстановки аргумента при вызове или дефолтного значения? Есть такой атрибут function1.__defaults__ - это тупл с дефолтными значениями аргументов. Для function1 он будет равен («hello»,). Но когда мы вызываем function1(3, «hello») у нас всегда будет b in function1.__defaults__ == True тупо потому что строки одинаковые.
Я не нашёл решения в инете. Может, кто-то знает про такое?
З.Ы. Про подстановку типа def function1(a, b=None) и про всякие *args, **kwargs я знаю, использовать это здесь нельзя по заданию.