I think it's important to think of Pythonic as something that's subjective and evolving.<p>The C examples given are idiomatic in C. The reason they're idiomatic is because they fit with a mental model that most of the C community uses: data structures in an enumerated address space, and passing around hunks of mutable memory with handshake semantics. If your code interacts with code that was written with that in mind, life should be pretty good.<p>Python has the same sort of thing, but at a different level of abstraction: objects, frequently enumerated by identity, grouped together by user-defined abstractions, with the understanding that function side effects are rare, unless they're object methods.<p>Haskell is arguably cleaner / terser, but it's yet another set of idioms. The only thing that makes pythonic Python is that it's used by the rest of the community. It's a shared understanding that's neither better or worse than any other shared understanding.
Nice overview. I think a lot of the tenets of pythonicness are based on the heuristic that there should be minimal cruft and friction between the reader and the code. I should be looking at a reasonably close approximation of my interpretation of the problem. Was it let or var? Semicolon or no semicolon? Was it := or set! <- or <<- ? Squiggly braces or none? Does the second indented line after a non-squiggly block count as part of the block? Was it private static or static private? Does const go before or after the function definition? Does i++ increment first or provide a value first? I should have to think less about any of these things and more about the problem.<p>Usually, syntax is minimal enough to get out of your way, and where there is syntax, it attempts to be consistent and to enforce clarity.
I submitted a related link before - Unpythonic Python<p><a href="http://skien.cc/blog/2014/04/09/unpythonic-python/" rel="nofollow">http://skien.cc/blog/2014/04/09/unpythonic-python/</a>
The article mentions Zope quite a bit - which was a big thing for a company I worked for in 2001 (Loudcloud), as we had a number of customers that wanted to use it. Whatever happened to Zope? Wikipedia seems to suggest there hasn't been much development in the last 4 years - anybody know?
We might be in the "post-pythonic" Python era. There was a discussion a few months back on #python to the effect that judging "pythonic"-ness was a shibboleth indicating the judger was <i>not</i> the best Python community member. Wish I could find a log.
I have a lot of love for python but when I want to achieve something that is easy in other languages but not available in Python because "thats not Pythonic" for some reason I think Stockholm Syndrome.
Functional is the new pythonic!<p>(edit: It actually is, half of the good things in Python, like list comprehensions and tuples and destructuring, were first seen in functional languages!)