Positional arguments work well, as do keyword arguments. I think it's a mistake to support both though. In e.g. Python it's hard to control how people will call you, and you may have differing views on the API you're exposing.