Learning Python =============== Beginner -------- The Python Tutorial ~~~~~~~~~~~~~~~~~~~~ This is the official tutorial. It covers all the basics, and offers a tour of the language and the standard library. Recommended for those who need a quickstart guide to the language. `The Python Tutorial `_ Learn Python Interactive Tutorial ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Learnpython.org is an easy non-intimidating way to get introduced to Python. The website takes the same approach used on the popular `Try Ruby `_ website, it has an interactive Python interpreter built into the site that allows you to go through the lessons without having to install Python locally. `Learn Python `_ If you want a more traditional book, *Python For You and Me* is an excellent resource for learning all aspects of the language. `Python for You and Me `_ Invent Your Own Computer Games with Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This beginner's book is for those with no programming experience at all. Each chapter has the source code to a small game, using these example programs to demonstrate programming concepts to give the reader an idea of what programs "look like". `Invent Your Own Computer Games with Python `_ Hacking Secret Ciphers with Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This book teaches Python programming and basic cryptography for absolute beginners. The chapters provide the source code for various ciphers, as well as programs that can break them. `Hacking Secret Ciphers with Python `_ Learn Python the Hard Way ~~~~~~~~~~~~~~~~~~~~~~~~~ This is an excellent beginner programmer's guide to Python. It covers "hello world" from the console to the web. `Learn Python the Hard Way `_ Crash into Python ~~~~~~~~~~~~~~~~~ Also known as *Python for Programmers with 3 Hours*, this guide gives experienced developers from other languages a crash course on Python. `Crash into Python `_ Dive Into Python 3 ~~~~~~~~~~~~~~~~~~ Dive Into Python 3 is a good book for those ready to jump in to Python 3. It's a good read if you are moving from Python 2 to 3 or if you already have some experience programming in another language. `Dive Into Python 3 `_ Think Python: How to Think Like a Computer Scientist ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Think Python attempts to give an introduction to basic concepts in computer science through the use of the Python language. The focus was to create a book with plenty of exercises, minimal jargon and a section in each chapter devoted to the subject of debugging. While exploring the various features available in the Python language the author weaves in various design patterns and best practices. The book also includes several case studies which have the reader explore the topics discussed in the book in greater detail by applying those topics to real-world examples. Case studies include assignments in GUI and Markov Analysis. `Think Python `_ Python Koans ~~~~~~~~~~~~ Python Koans is a port of Edgecase's Ruby Koans. It uses a test-driven approach, q.v. TEST DRIVEN DESIGN SECTION to provide an interactive tutorial teaching basic Python concepts. By fixing assertion statements that fail in a test script, this provides sequential steps to learning Python. For those used to languages and figuring out puzzles on their own, this can be a fun, attractive option. For those new to Python and programming, having an additional resource or reference will be helpful. `Python Koans `_ More information about test driven development can be found at these resources: `Test Driven Development `_ A Byte of Python ~~~~~~~~~~~~~~~~ A free introductory book that teaches Python at the beginner level, it assumes no previous programming experience. `A Byte of Python for Python 2.x `_ `A Byte of Python for Python 3.x `_ Learn to Program in Python with Codeacademy ~~~~~~~~~~~~~~~~~~~~ A Codeacademy course for the absolute Python beginner. This free and interactive course provides and teaches the basics (and beyond) of Python programming whilst testing the user's knowledge in between progress. `Learn to Program in Python with Codeacademy `_ Advanced -------- Pro Python ~~~~~~~~~~ This book is for intermediate to advanced Python programmers who are looking to understand how and why Python works the way it does and how they can take their code to the next level. `Pro Python `_ Expert Python Programming ~~~~~~~~~~~~~~~~~~~~~~~~~ Expert Python Programming deals with best practices in programming Python and is focused on the more advanced crowd. It starts with topics like decorators (with caching, proxy, and context manager case-studies), method resolution order, using super() and meta-programming, and general :pep:`8` best practices. It has a detailed, multi-chapter case study on writing and releasing a package and eventually an application, including a chapter on using zc.buildout. Later chapters detail best practices such as writing documentation, test-driven development, version control, optimization and profiling. `Expert Python Programming `_ A Guide to Python's Magic Methods ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This is a collection of blog posts by Rafe Kettler which explain 'magic methods' in Python. Magic methods are surrounded by double underscores (i.e. __init__) and can make classes and objects behave in different and magical ways. `A Guide to Python's Magic Methods `_ For Engineers and Scientists ---------------------------- A Primer on Scientific Programming with Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A Primer on Scientific Programming with Python, written by Hans Petter Langtangen, mainly covers Python's usage in the scientific field. In the book, examples are chosen from mathematics and the natural sciences. `A Primer on Scientific Programming with Python `_ Numerical Methods in Engineering with Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Numerical Methods in Engineering with Python, written by Jaan Kiusalaas, puts the emphasis on numerical methods and how to implement them in Python. `Numerical Methods in Engineering with Python `_ Miscellaneous topics -------------------- Problem Solving with Algorithms and Data Structures ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Problem Solving with Algorithms and Data Structures covers a range of data structures and algorithms. All concepts are illustrated with Python code along with interactive samples that can be run directly in the browser. `Problem Solving with Algorithms and Data Structures `_ Programming Collective Intelligence ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Programming Collective Intelligence introduces a wide array of basic machine learning and data mining methods. The exposition is not very mathematically formal, but rather focuses on explaining the underlying intuition and shows how to implement the algorithms in Python. `Programming Collective Intelligence `_ References ---------- Python in a Nutshell ~~~~~~~~~~~~~~~~~~~~ Python in a Nutshell, written by Alex Martelli, covers most cross-platform Python's usage, from its syntax to built-in libraries to advanced topics such as writing C extensions. `Python in a Nutshell `_ The Python Language Reference ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This is Python's reference manual, it covers the syntax and the core semantics of the language. `The Python Language Reference `_ Python Pocket Reference ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Python Pocket Reference, written by Mark Lutz, is an easy to use reference to the core language, with descriptions of commonly used modules and toolkits. It covers Python 3 and 2.6 versions. `Python Pocket Reference `_ Python Cookbook ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Python Cookbook, written by David Beazley and Brian K. Jones, is packed with practical recipes. This book covers the core python language as well as tasks common to a wide variety of application domains. `Python Cookbook `_ Writing Idiomatic Python ~~~~~~~~~~~~~~~~~~~~~~~~ "Writing Idiomatic Python", written by Jeff Knupp, contains the most common and important Python idioms in a format that maximizes identification and understanding. Each idiom is presented as a recommendation of a way to write some commonly used piece of code, followed by an explanation of why the idiom is important. It also contains two code samples for each idiom: the "Harmful" way to write it and the "Idiomatic" way. `For Python 2.7.3+ `_ `For Python 3.3+ `_