The 5th Edition of Learning Python published in 2013 has been updated to be current with Pythons 3.3 and 2.7. Especially given its introductory tutorial role, this book should address the needs of all Python 3.X and 2.X newcomers for many years to come.
Nevertheless, the inevitable parade of changes that seems inherent in open source projects will likely continue unabated in each new Python release. Many such changes are trivial, and often optional, extensions which will likely see limited use, and may be safely ignored by newcomers.
And to some, many Python changes may seem features in search of use cases—mutations considered clever by their advocates, but which have little clear relevance to real Python programs. This is a substantial downside of Python's dynamic, community-driven development model, which is most glaring to those on the leading edge of new releases, and which this book addresses head-on, especially in its introduction and conclusion (Chapters 1 and 41).
That being said, new Python features become required reading for you if they appear in code you use, and can become a factor if you upgrade to Python versions in which they appear. Consequently, this page briefly chronicles changes in Python since the 5th Edition's 2013 release, as a sort of virtual appendix to the book. You'll have to weigh for yourself the potential benefits of such changes against the expansion of Python's required knowledge base which they imply.
As covered in the book, in Python 3.3 and earlier, the special *X and **X syntax can appear in 3 places: in assignment statements, where it collects unmatched items in sequence assignments; in function headers, where it collects unmatched positional and keyword arguments; and in function calls, where it unpacks iterables and dictionaries into individual items (arguments).
Per current plans, in Python 3.4, this star syntax will be generalized, such that it may also be used within arbitrary data structure literals, where it will unpack collections into individual items, much like its original use in function calls. Specifically, the unpacking star syntax will be allowed to appear in tuples, lists, sets, dictionaries, and comprehensions. This is in addition to its original 3 roles in assignment statements, and function headers and calls. Moreover, some of the restrictions regarding use of the star syntax currently in place may be lifted in the process.
This change is imagined as a general way of flattening structures and yields some clever coding possibilities, though it remains to be seen whether Python programmers perceive this as an academic curiosity with a still-limited and special-case scope, or adopt it as a broadly applicable tool.
For more details, see Python 3.4's What's New? document, or the change's PEP document. Note that this is an extension to the core language itself, but not a change that breaks existing code.
Since its inception, Python has allowed definition of a set of identifiers using a simple range: for example, "red, green, blue = range(3)". Similar techniques are available with basic class-level attributes, dictionary keys, list and set members, and so on.
As of Python 3.4, a new standard library module makes this more explicit, with an Enum class in a new enum module that offers a plethora of functionality on this front. It employs class-level attributes to serve as identifiers, but adds support for iterations, printing, and much more.
As Python programmers seem to have gotten along fine without an explicit enumerated type for over two decades, the need for such an extension seems unclear. And to some, the numerous options afforded by the new class may also seem like over-engineering—a sort of identifier enumeration on steroids. Like all additions, though, time will have to be the judge on this module's applications and merits.
For more details, see Python 3.4's What's New? document, or the change's PEP document. Note that this is a new standard library module, not a change to the core language itself, and should not impact working code; some standard library modules may, however, incorporate this new module to replace existing integer constants, with effects that may remain to be seen.
A large number of 3.4 changes have to do with its modules related to the import operation—site of a major overhaul in 3.3 for both import in general, and the new namespace packages described in the book. As this is a relatively obscure functional area which is unlikely to impact typical Python programmers, see 3.4's What's New? document for more details, especially its section Porting to Python 3.4.
See this page for
additional issues regarding the Windows launcher shipped and installled
with Python 3.3, beyond those described in Learning Python, 5th Edition's
new Appendix B. In short:
The Windows launcher makes it easy to switch between installed Pythons,
but might have beeb positioned better in a less mandatory role.