Is it that it is more consistent in places?
No more long type
Division that works as expected
Annotations
No more xrange, iteritems etc, instead you get iterators everywhere
f-strings
Less duplicates (xrange vs range, itemview/iteritems/items(), map/itertols.map,).
Entering french in comments will not crash the program even if you didn't give "the unicode talk". Clear type for raw bytes with a proper name.
Way less verbose (no __future__, no u, no object, no codecs import, f-strings, simple super(), etc)
Debugging is easier (debug messages are better, exception chaining, division makes sense, repr is clearer)
You can't shoot yourself in the foot as much (ordering "1" and 1, assigning to True ...)
Less stuff to learn (e.g: pathlib instead of os/shutils/glob/codecs)
And that's just out of my head.
Python 2 still comes pre-installed on most everything. So, why can't someone coming to Python with little or no experience just be welcomed to use what they have for now?
I kid you not, some of these Python3'ers would have a newb bike shed for a week getting a whole Python 3 workflow with virtual environments, etc going before they'd let the person write their first hello, world. They can learn that stuff later, when it matters.
So, why can't someone coming to Python with little or no experience just install the latest version?
Just shedding some light on both sides of the argument. I'd prefer people starting out use the latest version because it is not hard to install Python 3 and takes very little effort.
Going from knowing Python 2 to 3 is far easier than going from not knowing Python or programming at all to knowing Python 3.