Using Python 3 for example code here on Wandering Thoughts
When I write about Python here, I often wind up having
some example Python code, such as the
subCls example in my
recent entry about subclassing a __slots__ class. Mostly this Python code has been
Python 2 by default, with Python 3 as the exception. When I started
writing, Python 3 wasn't even released; then it wasn't really
something you wanted to use; and then I was grumpy about it so I deliberately continued to use Python 2 for
examples here, just as I continued to write programs in it (for
good reasons). Sometimes I explicitly mentioned
that my examples were in Python 2, but sometimes not, and that too
was a bit of my grumpiness in action.
(There was also the small fact that I'm far more familiar with Python 2 than Python 3, so writing Python 2 code is what happens if I don't actively think about it.)
However, things change. Over the past few years I've basically made my peace with Python 3 and these days I'm trying to write new code in Python 3. Although writing my example code here in Python 2 is close to being a reflex, it's one that I want to consciously break. Going forward from now, I'm going to write sample code in Python 3 by default and only use Python 2 if there is some special reason for it (and then mention explicitly that the example is Python 2 instead of 3). This is a small gesture, but I figure it's about time, and it's also probably what more and more readers are just going to expect.
(It looks like I've been doing this inconsistently for a while, or at least testing some of my examples in Python 3 too, eg, and also increasingly linking to the Python 3 version of Python documentation instead of the Python 2 version.)
Actually doing this is going to take me some work and attention.
Since I write Python 2 code by reflex, I'm going to have to
double-check my examples to make sure that they're valid Python 3
(and that they behave the same way in Python 3). Some of the time
this will mean actually testing even small fragments instead of
relying on my Python (2) knowledge to write from memory. Also, when
I'm checking Python's behavior for something (or prototyping some
code), I'll have to remember to run
python3 instead of just
python or I'll accidentally wind up testing the wrong Python.
(When I wrote my recent entry I
was quietly careful to make the example code Python 3 code by
super() and then using the no-argument version,
which is Python 3 only.)
(I'm writing this entry partly to put a marker in the ground for myself, so that I won't be tempted to let a Python 2 example slide just because I'm feeling lazy and I don't want to work out and verify the Python 3 version.)