Сегодня был принят PEP-570, позволяющий использовать positional only arguments, добавляя в описании параметров функции после данных аргументов символ /
, точно так же, как *
позволяет отделять keyword only аргументы. Вообще, данный синтаксис уже используется в документации к built-in функциям, которые как раз принимают positional only аргументы. Да, built-in уже давно можно так делать. Так себя ведут, например, filter, map, некоторые функции из itertools. И я иногда забываю, где там key, а где iterable.
К тому же, positional only аргументы накладывают ограничения на использование partial, потому что ему нельзя сказать, что вот то, что вы передали, идёт раньше или наоборот позже в списке параметров. Более того, я вообще не знаю, как partial ведёт себя с позиционными аргументами, т.к. всегда использовал keyword аргументы, потому что explicit better than implicit.
К слову, хорошая практика во внутренних вызовах в своей библиотеке использовать вообще везде keyword аргументы, даже если функция принимает только один параметр. Тогда если вы в функции поменяете name на path, то все вызовы этой функции явно сломаются, что гораздо лучше, чем если всё продолжит тихо и неправильно работать. В общем, рекомендую.
А что касается PEP, то выводы те же, что и вообще для всех новых фич языка: надо думать головой, не злоупотреблять магией, и всё будет хорошо. Keep it simple.