tags:

views:

46

answers:

3

If a trailing comma is added to the end of a print statement, the next statement is executed first. Why is this? For example, this executes 10000 ** 10000 before it prints "Hi ":

print "Hi",
print 10000 ** 10000

And this takes a while before printing "Hi Hello":

def sayHello():
    for i in [0] * 100000000: pass
    print "Hello"
print "Hi",
sayHello()
+6  A: 
  1. In Python 2.x, a trailing , in a print statement prevents a new line to be emitted.

  2. The standard output is line-buffered. So the "Hi" won't be printed before a new line is emitted.

KennyTM
+4  A: 

You're seeing the effects of stdout buffering: http://stackoverflow.com/questions/107705/python-output-buffering

adw
+1  A: 

As others mention, standard out is buffered. You can try using this at points that you need the output to appear:

sys.stdout.flush()
Ned Batchelder