Reputation: 3933
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()
Upvotes: 9
Views: 10170
Reputation: 523254
In Python 2.x, a trailing ,
in a print
statement prevents a new line to be emitted.
print("Hi", end="")
to achieve the same effect.The standard output is line-buffered. So the "Hi"
won't be printed before a new line is emitted.
Upvotes: 25
Reputation: 578
print automatically puts a newline at the end of a string. This isn’t necessarily what we want; for example, we might want to print several pieces of data separately and have them all appear on one line. To prevent the newline from being added, put a comma at the end of the print statement:
d=6
print d,
print d
Output:
6 6
Upvotes: 2
Reputation: 375574
As others mention, standard out is buffered. You can try using this at points that you need the output to appear:
sys.stdout.flush()
Upvotes: 4
Reputation: 5021
You're seeing the effects of stdout buffering: Disable output buffering
Upvotes: 5