3 ms·
I think this code is easier to read than the more verbose 12-line version given in the article. It takes longer to read per line, but less time total.
by MichaelDickens 13y ago
I think this code is easier to read than the more verbose 12-line version given in the article. It takes longer to read per line, but less time total.
- Shish2k 13y agoIt's not just more complexity per line, it's also a higher level of complexity, using language-specific features that people who aren't fluent in python wouldn't be familiar with (multiplying a string by a boolean)
- groovy2shoes 13y agoBy that logic, no one should write anything in idiomatic French because anyone who isn't fluent in French wouldn't be able to read it.
- icambron 13y agoI was curious about that. Is multiplying a string by a boolean idiomatic Python? I don't write nearly enough Python to know, but it strikes me that this might be more like writing French using lots of obscure words.
- softbuilder 13y agoThis starts to get into "what is idiomatic python?" which changes as the language evolves. For example, before Python had an official ternary form, this was a common idiom: account.status = ["paid", "unpaid"][amount_due > 0] This does the same thing as the FizzBuzz example, coercing a bool to int. Here the int is used as an index into the list of the two strings. Personally, I found this handy and liked it a lot. Others didn't and now there is this, which isn't bad: account.status = "unpaid" if amount_due > 0 else "paid" Maybe it's less like using obscure French and more like speaking in a slightly different dialect, or in a different region with different cultural references.
- yen223 13y agoMultiplying a string by an integer is fine. Treating a boolean as an integer is iffy Multiplying a string by a boolean frankly should be a no-no.
- jfoster 13y agoWell, that example is a bit different. You're ignoring who the audience is. When writing code, the audience is usually at least people on the same team, if not the person writing in the first place. If writing in French for people who are not fluent, I think it would be a good idea to avoid idiomatic language.
- groovy2shoes 13y agoIt's not different. The audience in this case is people who are fluent in Python. Saying that code sample is bad is like saying Baudelaire is bad because only people fluent in French can read it.
- arethuza 13y agoI'm fairly new to Python, though not to software development, and one of the nice things I find about Python is that when I see something I haven't seen before (in this case multiplying a string by a boolean) I can usually guess correctly what it will do and spend a few seconds with the REPL to confirm. Of course, this is true to a certain extent of all programming languages, but I do find Python particularly easy in this respect.