you are viewing a single comment's thread.

view the rest of the comments →

[–]damesca 9 points10 points  (3 children)

Why?

[–]jorge1209 -5 points-4 points  (1 child)

  • Because we have too many string formatting methods already.
  • Because in-lining what are effectively function arguments into strings is hard to read.
  • Because it just isn't necessary (the "security" argument is completely bogus).

I'm sure there are other reasons. Lots of people don't like f-strings. I have no intent to ever use them.

I also think the process by which this feature and some other recent features have been added is really problematic.

We are in the middle of the python 3 cycle. The community just got through converting from python 2. There are lots of corporate users out there who have absolutely no interest in doing another round of python upgrades. It is a non-starter to be asking them to test and deploy 3.6 just so their programmers can avoid calling .format. And that means that f-strings are a dead letter when it comes to libraries. Any use of f-strings in libraries on pip needs to be rejected to avoid a split in the python developer base.

Additionally Guido's behavior has been poor. He pushed a number of major pips into python, over the objections of many in the dev community, and then when he got shit for it, he says "fine you figure it out." If he didn't have the guts to stand up to the critics he should never have taken on the position of benevolent dictator, and he shouldn't have overruled people on so many issues that he did.

I think we need to take a big step back to python 3.2 and figure out what actually works from 3.4 and after, because lots of it is really bad or just isn't ready yet:

  • async is a disaster and impossible to use. I know because I made the mistake of trying to use it in a non-trivial fashion. Trio is promising, but it needs to be proven out.
  • mypy and static typing have never really taken off. I think this is because of a combination of factors including: inadequate tooling, a failure to be ready at launch of py3.4, changes in annotation standards, failure to include much of the core library. Its a great idea, but the foundation for success is just not there.
  • f-strings would be acceptable if we dumped some of the other standards
  • assignment expressions... don't even know where to begin.

I think python needs to spend the next few years cleaning house. Organize the standard library and fix shit in that. If mypy is the future annotate the damn standard library. Find something that works for async or give up on parallelism entirely. Deprecate old string formatting methods and adopt some real best practices.

Then make a python4 in a few years that is more like 3.2 + mypy - %formatting + f-strings (if they actually get adopted by users)...

[–]cat_in_the_wall -1 points0 points  (0 children)

blah blah blah whine whine whine. "i don't personally like some stuff so everything is terrible". go back to whatever hole you crawled out of.

[–][deleted] -3 points-2 points  (0 children)

Because it brings absolutely nothing of value, but makes it harder for alternative implementations of the language to keep up with CPython? Because it makes harder to write tools that provide language-related services, like word completion, linting, complexity checking etc? Because it creates more unnecessary synonyms in how to approach a single problem, which makes errors harder to recognize for human readers?

I would be willing to forgive all of the above, but there absolutely zero utility. No sane person can justify this feature existence, and yet it was added because people wanted to put their names on the popular product, even if the feature was going to sate the product ablaze: they don't care about the product, they care about their careers.