On 01/28/10 01:32, Jean-Michel Pichavant wrote: > Daniel Fetchinson wrote: >>>> Hi folks, >>>> >>>> I was going to write this post for a while because all sorts of myths >>>> periodically come up on this list about python 3. I don't think the >>>> posters mean to spread false information on purpose, they simply are >>>> not aware of the facts. >>>> >>>> My list is surely incomplete, please feel free to post your favorite >>>> misconception about python 3 that people periodically state, claim or >>>> ask about. >>>> >>>> 1. Print statement/function creates incompatibility between 2.x and >>>> 3.x! >>>> >>>> Certainly false or misleading, if one uses 2.6 and 3.x the >>>> incompatibility is not there. Print as a function works in 2.6: >>>> >>>> Python 2.6.2 (r262:71600, Aug 21 2009, 12:23:57) >>>> [GCC 4.4.1 20090818 (Red Hat 4.4.1-6)] on linux2 >>>> Type "help", "copyright", "credits" or "license" for more information. >>>> >>>>>>> print( 'hello' ) >>>>>>> >>>> hello >>>> >>>>>>> print 'hello' >>>>>>> >>>> hello >>>> 2. Integer division creates incompatibility between 2.x and 3.x! >>>> >>>> Again false or misleading, because one can get the 3.x behavior with >>>> 2.6: >>>> >>>> Python 2.6.2 (r262:71600, Aug 21 2009, 12:23:57) >>>> [GCC 4.4.1 20090818 (Red Hat 4.4.1-6)] on linux2 >>>> Type "help", "copyright", "credits" or "license" for more information. >>>> >>>>>>> 6/5 >>>>>>> >>>> 1 >>>> >>>>>>> from __future__ import division >>>>>>> 6/5 >>>>>>> >>>> 1.2 >>>> >>>> >>>> Please feel free to post your favorite false or misleading claim about >>>> python 3! >>>> >>> Well, I see two false or misleading claims just above - namely that >>> the two claims above are false or misleading. They tell just half of >>> the story, and that half is indeed easy. A Python 3 program can be >>> unchanged (in the case of print) or with only trivial modifications >>> (in the case of integer division) be made to run on Python 2.6. >>> >> >> Okay, so we agree that as long as print and integer division is >> concerned, a program can easily be written that runs on both 2.6 and >> 3.x. >> >> My statements are exactly this, so I don't understand why you disagree. >> >> >>> The other way around this is _not_ the case. >>> >> >> What do you mean? >> >> >>> To say that two things are >>> compatible if one can be used for the other, but the other not for the >>> first, is false or misleading. >>> >> >> I'm not sure what you mean here. Maybe I didn't make myself clear >> enough, but what I mean is this: as long as print and integer division >> is concerned, it is trivial to write code that runs on both 2.6 and >> 3.x. Hence if someone wants to highlight incompatibility (which surely >> exists) between 2.6 and 3.x he/she has to look elsewhere. >> >> Cheers, >> Daniel >> >> > How would you write in python 2.6 > > if print: > print('Hello') > > --- > > def myPrint(*args): > for arg in args: > sys.stdout.write(str(arg)) > > print = myPrint > > JM
from __future__ import print_function if print: print('Hello') def myPrint(*args): for arg in args: sys.stdout.write(str(arg)) print = myPrint -- http://mail.python.org/mailman/listinfo/python-list