For example, you can write functions
to which you can pass an integer as
well as a string or a list or a
dictionary or whatever else, and it
will be able to transparently handle
all of them in appropriate ways (or
throw an exception if it cannot handle
the type). You can do things like that
in other languages, too, but usually
you have to resort to (ab)use things
like pointers, references or
typecasts, which opens holes for
programming errors, and it's just
plain ugly.