Eh, I don't like the one in functools. It allows overriding of variables previously defined, which personally causes more problems than it solves.
(So `functools.partial(foo, b=3)(a=1, b=2)` doesn't throw an error, and is equivalent to calling `foo(a=1, b=2)`)