myths about python 3

Ethan Furman ethan at stoneleaf.us
Thu Jan 28 01:14:53 CET 2010


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
> 

I think what Andre is saying is that you can't get 2.x behavior in 3.x, 
only the other way 'round.

In the integer division instance, the 2.x behavior of 6/5 = 1 is not 
going to happen in 3.x.

~Ethan~



More information about the Python-list mailing list