3 ms·
> Is this what idiomatic Python has become? What do you mean? Python has always been that way. "Explicit is better than implicit. [..] Readability counts." fro
by slightwinder 2y ago
> Is this what idiomatic Python has become?
What do you mean? Python has always been that way. "Explicit is better than implicit. [..] Readability counts." from the Zen of python.
> By contrast, here's the equivalent Ruby:
Which is awful to read. And of course you could write it similar short in python. But it is not the purpose of a documentation to write short, cryptic code.
- pansa2 2y ago> Readability counts Almost all Python programmers should be familiar with list comprehensions - this should be easy to understand: parts = [... if isinstance(item, Interpolation) else ... for item in template] Instead the example uses an explicit loop, coupled with the quirks of the `match` statement. This is much less readable IMO: parts = [] for item in template: match item: case str() as s: parts.append(...) case Interpolation(value, _, conversion, format_spec): parts.append(...) > [Ruby] is awful to read I think for someone with a basic knowledge of Ruby, it's more understandable than the Python. It's a combination of basic Ruby features, nothing advanced. I don't particularly love Ruby's syntax either, though - I think the ideal implementation would be something like: fn stringify(item) => item.is_a(Interpolation) then item.value.convert(item.conversion).format(item.format_spec) else item.to_string() fn f(template) => template.map(stringify).join()
- slightwinder 2y ago> Almost all Python programmers should be familiar with list comprehensions Being familiar doesn't mean it's readable. They can be useful, but readability is usually not on that list. > I think for someone with a basic knowledge of Ruby, it's more understandable than the Python. I know both, and still consider it awful. Readability is not about making it short or being able to decipher it.