You can do almost what you want, as long as you don't mind a slight difference in syntax:
import cStringIO
import sys
def getPrint(thefun, *a, **k):
savstdout = sys.stdout
sys.stdout = cStringIO.StringIO()
try:
thefun(*a, **k)
finally:
v = sys.stdout.getvalue()
sys.stdout = savstdout
return v
, getPrint(funA), not getPrint(funA()) - , , getPrint .
, getPrint ( , getPrint!).