On Fri, Jul 16, 2010 at 7:27 AM, Tim Peters <tim.pet...@gmail.com> wrote: > [kirby] >> ... >> Using print as a function is optional in 2.6 without >> importing anything special. > > Nope! `print` is a statement in all 1.x and 2.x versions of Python. > When you do, say, > > print(1) >
Ouch, thank you for clearing up a basic confusion Tim! I knew this only a month ago when I *did* use from __future__ import print_function in another Python 2.6 class, but in the fog of battle was lapsing into a more punch drunk state. I could feel when I was writing that last post that I was saying something wrong. But what? I'm glad to be performing in the role of "dunce clown" here -- somebody's gotta do it (?), might as well be me. While I'm being in this mode, here's another basic question. Is there a way, after importing from __future__, to revert to the "old ways" later on in the same script? Here was my (failed) experiment along those lines: >>> 1/2 0 >>> from __future__ import division >>> 1/2 0.5 >>> del division >>> 1/2 0.5 >>> division Traceback (most recent call last): File "<pyshell#13>", line 1, in <module> division NameError: name 'division' is not defined >>> from __future__ import division >>> division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192) I'm not saying this would ever be a good idea, just wondering about possibilities... Kirby > before Python 3.x, you're not calling a print function with an > argument of 1, you're giving the expression (1) to the print > statement. (1) is the same thing as 1, so it just prints "1". > > Maybe the difference is clearer here: > > print(1,2,3) > > Before 3.x, tjat's the same as > > _x = (1, 2, 3) > print _x > > That is, it's not passing arguments 1, 2 and 3 to a print function, > it's giving a single expression - the 3-tuple (1, 2, 3) - to the print > statement - and is very different from > > print 1, 2, 3 > > (which gives 3 expressions - not just 1 - to the print statement). > > It's really the same as doing, e.g., > > return(1) > > `return` and `print` are statements, and tacking "(1)" on does not > magically turn either into a function call, it's just adding redundant > parentheses to the expression "1". > _______________________________________________ > Edu-sig mailing list > Edu-sig@python.org > http://mail.python.org/mailman/listinfo/edu-sig > _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig