DEV Community

Discussion on: What is the state of Python versions?

Collapse
 
jheld profile image
Jason Held

Py3.6 is likely your base target, feature wise. 3.7 has some improvements and more features but 3.6 still has more explicit support. However they are mostly compatible. 3.8 is the newest. 3.9 is in alpha.

If you're looking for asyncio support you would really need 3.5+, but ideally 3.6+.

Good type hint/annotation support is really 3.6+, though 3.5 has some support.

3.6+ has f-strings (f"hi {name}").

3.7 has official built in dataclass support (3.6 has a PyPI package), which is for helping reduce class boilerplate but also helping with memory management.

Collapse
 
codemouse92 profile image
Jason C. McDonald • Edited

And 3.8 has those ever-so-controversial (but adorable) walruses. ;)

My own recommendation is for new projects to support Python 3.6 through 3.8, as much as is practical. Python 3.7 is a good "middle ground", as it's available on most (if not all) modern operating systems. Ubuntu 19.04 and onward use 3.7 as the base version, and don't even ship 3.6.

And, of course, Python 2 is at official End Of Life, and thus should be considered dead for all practical intents and purposes.

Collapse
 
douglasjreynolds profile image
Doug Reynolds

Python 3.7 is my version of choice. 3.8 doesn't really have anything I need, except for the walrus, and 3rd libraries take a while to add support. 3.7 also had a good deal of performance improvements over 3.6.

I am waiting for 3.9 before leaving 3.7