Earlier quoted context omitted.
> As a developer who has primarily developed applications in Python for his entire professional career, I can't say I'm especially excited about any of the "headlining" features of 3.8. Python is a fairly old, mature language. What features would you have been especially excited about?
I wouldn’t mind cpython performance improvements over language features. Specifically startup time. Py cli tools can easily take up to 300-600ms to start. Now, try to use them for scripting. A single script doing a bunch of calls to python clis has already several seconds of runtime penalty.
What’s New in Python 3.8
351–360 of 381 posts
Re: What’s New in Python 3.8
#352Earlier quoted context omitted.
I wouldn’t mind cpython performance improvements over language features. Specifically startup time. Py cli tools can easily take up to 300-600ms to start. Now, try to use them for scripting. A single script doing a bunch of calls to python clis has already several seconds of runtime penalty.
I completely agree, but you'll notice similar startup overheads in almost all non-native languages: Java, Ruby, Node.js. I wonder if there is anything that can really be done, outside of something like Cython.
I compile my cli tools with nuitka [0], the resulting binaries take half the time to start. I find the difference quite notable.
Re: What’s New in Python 3.8
#353Earlier quoted context omitted.
I wouldn’t mind cpython performance improvements over language features. Specifically startup time. Py cli tools can easily take up to 300-600ms to start. Now, try to use them for scripting. A single script doing a bunch of calls to python clis has already several seconds of runtime penalty.
I completely agree, but you'll notice similar startup overheads in almost all non-native languages: Java, Ruby, Node.js. I wonder if there is anything that can really be done, outside of something like Cython.
But startup time increases an order of magnitude once you start importing 'requests' and other common packages.
Perhaps an option to turn imports lazy...
Re: What’s New in Python 3.8
#354Earlier quoted context omitted.
> As a developer who has primarily developed applications in Python for his entire professional career, I can't say I'm especially excited about any of the "headlining" features of 3.8. Python is a fairly old, mature language. What features would you have been especially excited about?
I would honestly like an option to "compile" python to check for typing inconsistencies with the type hinting introduced in Python 3. Also, the multithreading story is kinda shitty
You can use mypy for that: https://github.com/python/mypy
Re: What’s New in Python 3.8
#355As a developer who has primarily developed applications in Python for his entire professional career, I can't say I'm especially excited about any of the "headlining" features of 3.8. The "walrus operator" will occasionally be useful, but I doubt I will find many effective uses for it. Same with the forced positional/keyword arguments and the "self-documenting" f-string expressions. Even when they have a use, it's us…
> The "walrus operator" will occasionally be useful, but I doubt I will find many effective uses for it. The primary one I want is if m := re.match(...): print(m.group(1)) and while s := network_service.read(): process(s) both of which are both clearer and less error-prone than their non-walrus variants. The other one that I would have found useful an hour ago is in interactive exploration with comprehensions. I freq…
That was the reasoning given for using ":=" instead of "as", to allow more complexity. I still think it was a mistake.
Re: What’s New in Python 3.8
#356Earlier quoted context omitted.
Not OP, but maybe it's "as": if re.match(pattern, string) as m: #use m Seems a bit more Pythonic, as "as" is already used like this with "with". Either one would be fine with me and useful.
It's already used in imports as well! It was the better choice, I don't know which arguments convinced them otherwise
Of course neither of those things have been seen in the wild or production code since. Some folks complain even the simple case above is less readable.
"as" was the Pythonic choice, rather than the C/Pascalic one.
Re: What’s New in Python 3.8
#357Earlier quoted context omitted.
Perhaps Python itself could worn you that certain constructs are deprecated and will be removed in future versions. And you could 'import something from future' to opt-in to making those warnings errors right now.
That's a pretty good idea, deprecating & warning + providing automatic conversion utilities + using 'future' to make them errors... But that won't happen :-(
I forget the exact details though.
Re: What’s New in Python 3.8
#358Earlier quoted context omitted.
I think I remember seeing something about the "as" syntax. Wish I could find what I read, IIRC some arguments convinced me that the walrus operator was an improvement.
it is discussed in the PEP https://www.python.org/dev/peps/pep-0572/#alternative-spelli...
Re: What’s New in Python 3.8
#359 if m=whatever():
do_something
Why create a new assignment operator? For all the talk about making code not confusing, etc., some of these decisions sure seem nonsensical.Oh, OK, it confuses passing arguments into a function by name? Really? C'mon.
Also, I can't understand the nearly religious rejection of pre and post increment/decrement (++/--) and, for the love of Picard, the switch() statement.
I enjoy using Python but some of these things are just silly. Just my opinion, of course. What do I know anyhow? I've only been writing software for over thirty years while using over a dozen languages ranging from machine language (as in op codes) to APL and every new fad and modern language in between.
As I watch languages evolve what I see is various levels of ridiculous reinvention of the wheel for very little in the way of real gains in productivity, code quality, bug eradication, expressiveness, etc. Python, Objective-C, Javascript, PHP, C# and a bunch of other mutants are just C and C++ that behave differently. Sure, OK, not strictly true at a technical level, but I'll be damned if it all doesn't end-up with machine code that does pretty much the same darn thing.
The world did exist before all of these "advanced" languages were around and we wrote excellent software (and crappy software too, just like today).
What's worse is that some of these languages waste a tremendous amount of resources and clock cycles to do the same thing we used to do in "lower" languages without any issues whatsoever. Mission critical, failure tolerant, complex software existed way before someone decided that the switch() statement was an abomination and that pre and post increment/decrement are somehow confusing or unrefined. Kind of makes you wonder what mental image they have of a programmer, doesn't it? Really. In my 30+ years in the industry I have yet to meet someone who is laid to waste, curled-up into a fetal position confused about pre and post increment/decrement, switch statements and other things deemed too complex and inelegant in some of these languages and pedantic circles.
Geez!
Re: What’s New in Python 3.8
#360Earlier quoted context omitted.
I may be missing something, but := is still only a 1 character difference, isn't it?
It is, but many intro programmers (and non-intro programmers!) often forget to use == instead of = for comparison, because in the real world, = more often implies equality, rather than assignment. So a novice might mistakenly type `if x=1:` but they would be unlikely to accidentally type `if x:=1:`.