On Tue, Jan 26, 2010 at 10:23 PM, Paul Rubin <no.em...@nospam.invalid>wrote:
> Steven D'Aprano <ste...@remove.this.cybersource.com.au> writes: > > print as a function is more consistent and more convenient than print as > > a statement. > > Convenience is subjective, but the 3.x 'print' behavior is definitely > inconsistent (i.e. different from 2.x). This is a strange definition of "consistent" in my mind. To me, consistent means that it matches the patterns and idioms of the rest of the language at that point in time, not that it implies anything about backwards-compatibility. "print" as a statement was always inconsistent with the rest of the Python language; the rules of how it behaved had to be defined in a unique way (e.g., the behavior of trailing commas, the >> syntax to redirect what you print to). Everything about the statement was inconsistent. Yes, 3.0 changing the print statement to a function made it inconsistent with previous versions, but at the same time it made it MORE consistent with the rest of the language and Python code. If we are defining "consistent" as "backwards-compatible", we have a problem. Python3 is about fixing -language- inconsistencies, and allowing for backwards incompatibility when that meant the language itself was more consistent. > The change makes a lot of my > code silently produce wrong results, too. I often print tuples to show > what a program is doing: > > print (timestamp, 'transmogrified', blob) > > which in 2.x prints a parenthesized tuple that I can later read back in > with eval. That line of code still prints a message, but in a different > format, instead of throwing an error. > That seems like bad code. If one needs to print out what a program is doing, use the logging module. Maybe its just me, but in my experience-- real professional code never uses print unless it was a small script with a very narrowly focused purpose. Changing that focus to use Python3's print function vs a statement isn't really all that hard. And the language is more consistent. --S
-- http://mail.python.org/mailman/listinfo/python-list