Python trailing comma after print executes next instruction
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":
开发者_如何学Cdef sayHello():
for i in [0] * 100000000: pass
print "Hello"
print "Hi",
sayHello()
In Python 2.x, a trailing
,
in aprint
statement prevents a new line to be emitted.- In Python 3.x, use
print("Hi", end="")
to achieve the same effect.
- In Python 3.x, use
The standard output is line-buffered. So the
"Hi"
won't be printed before a new line is emitted.
You're seeing the effects of stdout buffering: Disable output buffering
As others mention, standard out is buffered. You can try using this at points that you need the output to appear:
sys.stdout.flush()
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
精彩评论