Not a very helpful article. Far from a general "improve your Python productivty", it's more like "here are some minor random Python features that I think are useful".
TLDR:
* Use dict and set comprehensions.
* Use collections.Counter.
* Use json.dumps or the pprint module for pretty printing.
* Create simple web services with Python's XML-RPC library.
As we move toward languages with big standard libraries, productivity becomes more and more about knowing what you don't have to do yourself.
Case in point - even as a Python veteran, I've never seen/used collections.Counter before. It'll save me from writing the same stupid three lines over and over, and is probably implemented faster than I naively do. I'd say that this will improve my productivity.
Could not agree with you more. The more advanced I become with a language, the more I like to go back to even basic docs and read the small-print fancy uses for built-ins. This article touches on a number of them, and it's tricks like this that help you write better code (when used responsibly, of course).
The biggest problem is having to use old LTS distros in production that only have python 2.6 for example. I'm glad that most LTS versions are soon to be using python 2.7.
I know 2.7 has been around for a long time, but so much production software is running on RHEL/Centos systems with 2.6.
You can find python26 in EPEL [1] or follow this guide [2] to setup 2.7. This will install 2.6 or 2.7 in parallel, do not set these by default as it will break yum.
Despite the negative comments here, it's always good to be reminded of some of nice built-in things.
Reminds me how awesome pythons standard functionality really is.
Agreed. I use python a lot and I hadn't seen that dict comprehensions had been back-ported to 2.7. So while the rest of it wasn't super useful to me, that was.
One single productivity python I'd like to share here is to use 'string foo'.partition(' ') instead of splitting. The reason is the edge cases are better handled with partition: you always get a 3-tuple, no matter what. No need to precheck that the split is here, or to postcheck the length of the splitted list.
On the other hand, .split() with no argument splits on any amount of whitespace (\s+, as a regex). That's often quite a useful edge case to have handled for you. You can also do .split(c, 1) to limit it to a single split. It could still split 0 times, though - it just depends which edge cases you want to handle.
Though I have yet to come across book titled "Effective Python", books like "Python Essential Reference" by David Beazly and "Python Cook Book" covers lot of ares that you mention above.
TLDR:
* Use dict and set comprehensions.
* Use collections.Counter.
* Use json.dumps or the pprint module for pretty printing.
* Create simple web services with Python's XML-RPC library.
* Use open source libraries...