The Python programming language is an open source, widely-used tool for creating software applications.
Python is often used to build and deploy web applications and web APIs. Python can also analyze and visualize data and test software, even if the software being tested was not written in Python.
Python has several useful programming language concepts that are less frequently found in other languages. These concepts include:
Generators are a Python core language construct that allow a function's return value to behave as an iterator. A generator can allow more efficient memory usage by allocating and deallocating memory during the context of a large number of iterations. Generators are defined in PEP255 and included in the language as of Python 2.2 in 2001.
Comprehensions are a Python language construct for concisely creating data in lists, dictionaries and sets. List comprehensions are included in Python 2 while dictionary and set comprehensions were introduced to the language in Python 3.
Comprehensions are a more clear syntax for populating conditional data in the core Python data structures. Creating data without comprehensions often involves nested loops with conditionals that can be difficult for code readers to properly evaluate.
List comprehension:
>>> double_digit_evens = [e*2 for e in range(5, 50)]
>>> double_digit_evens
[10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]
Set comprehension:
>>> double_digit_odds = {e*2+1 for e in range(5, 50)}
{11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99}
Dictionary comprehension:
>>> {e: e*10 for e in range(1, 11)}
{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60, 7: 70, 8: 80, 9: 90, 10: 100}
Python Module of the Week is a tour through the Python standard library.
A Python interpreter written in Python is incredibly meta but really useful for wrapping your head around some of the lower level stuff going on in the language.
A few things to remember while coding in Python is a nice collection of good practices to use while building programs with the language.
Python tricks that you can't live without is a slideshow by Audrey Roy that goes over code readability, linting, dependency isolation, and other good Python practices.
Python innards introduction explains how some of Python's internal execution happens.
What is a metaclass in Python is one of the best Stack Overflow answers about Python.
Armin Roacher presented things you didn't know about Python at PyCon South Africa in 2012.
There's an entire page on best Python resources with links but the following resources are a better fit for when you're past the very beginner topics.
The Python Subreddit rolls up great Python links and has an active community ready to answer questions from beginners and advanced Python developers alike.
The blog Free Python Tips provides posts on Python topics as well as news for the Python ecosystem.
Python Books is a collection of freely available books on Python, Django, and data analysis.
Python IAQ: Infrequently Asked Questions is a list of quirky queries on rare Python features and why certain syntax was or was not built into the language.
A practical introduction to Functional Programming for Python coders is a good starter for developers looking to learn the functional programming paradigm side of the language.
Getting Started with the Python Internals takes a slice of the huge CPython codebase and deconstructs some of it to see what we can learn about how Python itself is built.
Comprehending Python’s Comprehensions is an awesome post by Dan Bader with a slew of examples that explain how list, dictionary and set comprehensions should be used.
Python List Comprehensions: Explained Visually explains how the common idiom for iteration became syntactic sugar in the language itself and how you can use it in your own programs.
The Python 3 Patterns and Idioms site has an overview of comprehensions including code examples and diagrams to explain how they work.
Comprehensions in Python the Jedi way shows off comprehensions with a Star Wars theme to walk through the nuts and bolts. All examples use Python 3.5.
Idiomatic Python: Comprehensions explains how Python's comprehensions were inspired by Haskell's list comprehensions. It also provides clear examples that show how comprehensions are shorthand for common iteration code, such as copying one list into another while performing some operation on the contained elements.
List comprehensions in Python covers what the code for list comprehensions looks like and gives some example code to show how they work.
This blog post entitled Python Generators specifically focuses on generating dictionaries. It provides a good introduction for those new to Python.
Generator Expressions in Python: An Introduction is the best all-around introduction to how to use generators and provides numerous code examples to learn from.
Python 201: An Intro to Generators is another short but informative read with example generators code.
Iterators & Generators provides code examples for these two constructs and some simple explanations for each one.
Python: Generators - How to use them and the benefits you receive is a screencast with code that walks through generators in Python.
The question to Understanding Generators in Python? on Stack Overflow has an impressive answer that clearly lays out the code and concepts involved with Python generators.
Generator Tricks for Systems Programmers provides code examples for using generators. The material was originally presented in a PyCon workshop for systems programmers but is relevant to all Python developers working to understand appropriate ways to use generators.