Not actually sufficient though, you'll need:
def slow_add_int_float(a: int, b: float) -> float: # etc
where an argument could be made for encoding the return type in the name as well, at least for functions that don't do addition.
What that has going for it is the warm familiarity of C99. People really like function (and sometimes operator, if they draw a distinction) overloading though, and can reasonably argue that writing template instantiations by hand is a poor use of their time.