Also in Python "is positional" / "is keyword" / "is optional" are 3 orthogonal axes where every combination is allowed. This massively increases the state space, and empirically leads to tons of breakage.

For example, *any* reordering of args here is breaking: 

def example(a, b, c=None, d=None)