Ответ 1
Это не имеет никакого отношения к functools.partial
. Вы по сути вызываете свою функцию следующим образом:
f(1, x=3)
Сначала Python выполняет позиционные аргументы, а ваш первый аргумент x
. Затем применяются аргументы ключевого слова, и вы снова поставляются x
.
functools.partial()
не имеет возможности обнаружить, что вы уже поставили первый позиционный аргумент в качестве аргумента ключевого слова. Он не увеличит ваш вызов, заменив аргумент positional аргументом y=
.
При смешивании позиционных аргументов и ключевых слов вы должны стараться не использовать один и тот же аргумент дважды.