4 ms·
What I don’t like about Python
- pshc 18y agoSome of the points are valid, but I'd like to see a follow-up post first once the author has learned about decorators (and maybe `with` statements).
- d0mine 18y agoTrue. Here's his examples rewritten in Python (Python is not Ruby despite that both are nice languages): with atomicio_handler(afile) as handle: handle.write("foo") if blah: raise Exception, "baz" handle.write("bar") with atomicio_handler(afile) as fh1: with atomicio_handler(anotherfile) as fh2: ...
- anuraggoel 18y agoTechnical arguments aside, this is one of the most levelheaded language/framework rants I have seen in a long time. I wish more people ranted like this. But I guess they wouldn't call it a rant then.
- critic 18y ago> I wish more people ranted like this. Not me. Real rants are more fun to read. cf http://linuxhaters.blogspot.com/2009/01/river-of-fail.html http://linuxhaters.blogspot.com/2009/01/river-of-fail.html Yossi already has what's basically a C++ hater's blog. I'd like to see these for every popular language and platform.
- llimllib 18y agoSo, he doesn't like Python because he thinks multi-line lambdas read slightly better than inline functions? I mean, ok, I don't agree, but whatever. So why did 26 people vote this up? There's almost no meat to it at all.
- adamc 18y agoPresumably, we disagreed with you. The actual meat, for me, is thinking about how one goal interferes with another. Not news, but examples are always welcome.
- llimllib 18y agoFair enough, my question was unclear; I wanted to know what people saw in the article that I didn't. Thanks for answering my question even though I didn't ask it well.
- njharman 18y agoI upvoted so more people would be exposed to the lesson. Author's perceived deficiencies in language were actually deficiencies in author's knowledge of that language. Humbleness, you proly need more of that.
- deleted 18y ago[deleted]
- cabalamat 18y agoThe thing I most dislike about Python is the collection classes aren't sufficiently orthogonal. What do I mean? Python has two main built-in collection types, list and dict. If you have a list you can use "in" to ask whether the list contains a value: >>> a = ['a','b','c'] >>> 'a' in a True >>> 'zzz' in a False But if you're using a dict, "in" tells you whether the dict's keys contains a value (not the dict's value). >>> d = {'x':'a', 'y':'b'} >>> 'a' in d False >>> 'x' in d True To enumerate over a dict's key-value pairs, you use .items(): >>> d.items() [('y', 'b'), ('x', 'a')] But to enumerate over the key-value pairs in a list, you have to use enumerate(): >>> list(enumerate(a)) [(0, 'a'), (1, 'b'), (2, 'c')]
- anamax 18y ago> Python has two main built-in collection types, list and dict And tuples. > To enumerate over a dict's key-value pairs, you use .items(): You can also use enumerate. > But to enumerate over the key-value pairs in a list, you have to use enumerate(): Just like you can with lists. Python's collection operations do the right thing on collection data types. The fact that those data types also have type-specific operations merely means that those data types have some properties that are not common to all collection types, which is pretty much the reason why they exist.
- anamax 18y agoI forgot that python's sets and strings are also collection types. (IMHO, enumerate's handling of sets is odd, but ....) [And yes, I fumble-fingered "Just like you can with dicts." above.]
- bhiggins 18y agolist and dict are used for completely different reasons and have difference performance. are you perhaps a php programmer?
- deleted 18y ago[deleted]
- 18y ago
- nihilocrat 18y agothe concept of passing functions (which many programmers are not comfortable with) If this is true, I am apparently quite the programming badass, and so is anyone who has conquered the "callback function" section of your C textbook of choice. In some cases, I wouldn't know what to do without them, and I enjoy the fact that Python makes it seem very natural to be passing them around.
- jamongkad 18y agoWell that makes two of us then.
- ewiethoff 18y agoPedant here. The fact that a Python lambda cannot be multi-line is not directly related to the whitespace thing. After all, it's easy to put several statements on one line by separating them with semicolons. No, the issue is, a Python lambda cannot include any statements; it can only contain an expression. Expressions and statements are different animals in Python. That's a fundamental issue.