Print statements, unicode/basestring/long/xrange types, exception syntax (except E, e: → except E as e:), iteritems/itervalues/iterkeys, urllib2/urlparse imports, StringIO/Queue/ConfigParser renames, apply/execfile/reload, and u'' literals.
What are the most important Python 3.10 features?
Structural pattern matching (match/case), X | Y union type syntax replacing Optional[X], and improved error messages. Python 3.12 adds the type statement for aliases and removes distutils.
Do I still need the typing module in Python 3.9+?
For list[], dict[], tuple[], set[] — no, use builtins directly. For Optional use X | None (3.10+). For Union use X | Y (3.10+). Some advanced typing features still require the module.