print
first converts the object to a string (if it is not already a string). It will also put a space before the object if it is not the start of a line and a newline character at the end.
When using stdout
, you need to convert the object to a string yourself (by calling "str", for example) and there is no newline character.
So
print 99
is equivalent to:
import sys
sys.stdout.write(str(99) + '\n')