Python 3 is a better language than Python 2. Unfortunately, for most projects, "porting to Python 3" means writing code that works on both versions unchanged: a subset that is, ironically, a worse language than Python 2.7.
So, why are we doing this? What's the silver lining? What awaits you in the future – on the day when you can drop support for Python 2?
Why should you care about chained exceptions, dict views, nonlocal variables, extended unpacking, keyword-only arguments, async functions, matrix multiplication, isolated mode, or or type annotations? How can these features help you write better programs, find bugs faster, describe your logic more clearly, and have more fun doing it?
Python website: https://www.python.org/ There may be a live demo, but if it fails the talk will still work.
As a Python developer on Red Hat's developer experience team, my main job is porting things to Python 3. | If you go to any Python meetup in the country, you'll probably find me there. | | https://encukou.cz