цитирую
Keyword arguments offer several advantages. As you likely noticed in two exam- ples above, keyword arguments may be passed in any order. Additionally, Gear is now free to add or remove initialization arguments and defaults, secure in the knowl- edge that no change will have side effects in other code.
When Gear switched to keyword arguments, it lost its dependency on argument order but it gained a dependency on the names of the keywords. This change is healthy. The new dependency is more stable than the old, and thus this code faces less risk of being forced to change.
Using keyword arguments requires the sender and the receiver of a message to state the keyword names. This results in explicit documentation at both ends of the message. Future maintainers will be grateful for this information.
Keyword arguments are so flexible that the general rule is that you should prefer them. While it’s certainly true that some argument lists are so stable, and so obvious, that keywords are overkill (for example, what would Point take but an x and a y?), your bias should be toward declaring arguments using keywords. You can always fall back to positional arguments if that technique better suits your specific problem.