On 5/28/2013 6:25 PM, Joel Goldstick wrote:
On Tue, May 28, 2013 at 6:18 PM, Mark Lawrence <breamore...@yahoo.co.uk
<mailto:breamore...@yahoo.co.uk>> wrote:
On 28/05/2013 20:46, Carlos Nepomuceno wrote:
I'd like to have something like '#ifdef' to mix code from Python
2 and 3 in a single file.
https://pypi.python.org/pypi/__six/1.3.0
<https://pypi.python.org/pypi/six/1.3.0>
my original response was from cell phone. I just answered that you
can't do ifdefs, implying that there is no preprocessor in python. I
learned a lot of things I didn't know reading the thread, but I wonder
if it is a good idea in general to try to write code like this. --
combined 2.x/3.x codebase can be a bear to maintain.
Many people have come to prefer a) a single 2&3 codebase over b)
separate 2 and 3 codebases or c) a single 2 codebase repeatedly
converted to a 3 codebase with 2to3.
They use 2to3 once (well, a few times) to discover differences that need
to be considered.
For 2.7 and 3.x, the future imports are enough for some code. The six
module handles harder cases.
I wouldn't do it
unless there was some imposing reason that I must. Its not just print()
-- that isn't bad, but changes in module names (urllib),
I believe six handles that
> arithmetic, and
from __future__ import integer_division # spelling?
handles the only change
unicode
Use unicode consistently and
from __future__ import unicode_literals # spelling?
or the re-addition u'' prefix do quite well.
Otherwise, do not use things that evaporated, like apply() and classic
classes. (Inherit from object if nothing else.)
This is all hearsay coming from me ;-).
Terry
--
http://mail.python.org/mailman/listinfo/python-list