I get that repr() is supposed to be the precise representation and str() is intended more to be friendly than precise. My concern with the proposal is just that this:
>>> print x foo
...doesn't actually feel that friendly to me. I want to know that it's *probably* a function or *probably* a class, the same way that today, when I see:
>>> print x biscuit
>>> print y [1, 2, 3]
I can guess that x is *probably* a string and y is *probably* a list (e.g. because I know I'm not working with any custom objects whose __str__ returns those things).
It would create a slightly higher mental burden (or slightly higher probability of human error) if, when I see:
>>> print x Splat
...I have to remember that x might be a string or a function or a class.
I'd just like some kind of visual hint as to what it is. Like:
>>> print x foo()
>>> print x function foo
>>> print x function foo(a, b)
>>> print x class Bar
In fact "function foo(a, b)" would actually be rather useful in a lot of situations, and I would argue, friendlier than "foo".