One of my favourites features in Python are named parameters. I even wish Java could be more verbose in that manner.
Here's the counter point : ordered argument list will break if the order is re arranged in the defined function. While for named arguments it doesn't.
Counter-counterpoint: Once you add support for named arguments, your cannot do either, as you don't know which convention the caller uses.
Part of me prefers just using an anonymous object in Javascript. Typescript is also cleaner than that.
Day to day I use Hack (FB's PHP fork), which has a type system and shapes, which are essentially anonymous objects in the JS/TS sense but a little more awkward syntactically:
function foo(shape(
'a' => int,
'b' => int,
?'c' => int,
)): void;
foo(shape('a' => 1, 'b' => 2));
But with Python you sort of have this awkward mix of args and kwargs.