<div class="gmail_quote">On Mon, Jan 9, 2012 at 1:51 PM, Stefan Behnel <span dir="ltr"><<a href="mailto:stefan_ml@behnel.de">stefan_ml@behnel.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

anatoly techtonik, 09.01.2012 11:30:<br>
<div class="im">> In Python 2 "print 'something', statement calls were unbuffered and<br>
> immediately appeared on screen.<br>
> In Python 3 "print('something', end='')" calls are buffered. This breaks<br>
> progress bars and other stuff.<br>
><br>
> 1. What is more "Pythonic" and why?<br>
<br>
</div>I find the Py3 behaviour more pythonic: flushing should be explicit (which<br>
is better than implicit). The mere fact that the user did *not* provide a<br>
terminator shows that there are likely other things to follow.</blockquote><div><br></div><div>Do you find pythonic that `print` statement should output string to the screen (according to docs), but it doesn't do this?</div>

<div>Do you find ability to stack chars into screen buffer before the output (instead of doing stacking to a string) more important than hiding the low level outputĀ implementationĀ details from the users?</div><div><br></div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">A progress<br>
bar is just one specific case where flushing is actually desired. In other<br>
cases, it may not be desired and would rather lead to performance issues.<br>
Making it implicit if a flush happens or not prevents users from<br>
controlling it.<br></blockquote><div><br></div><div>Can you give some examples of these 'other cases'? Maybe 95% of users are using print for progress bars, and enabling flushing by default will make it more pythonic by making code more beautiful (which is better than ugly).</div>

</div>