Description
Python successfully maintains a fine balance between being easy to learn and useful for even large-scale projects. This is achieved both through the design of the language, and through the community.
On the language design side, Python is built around a closely curated set of mechanisms – iterators, attribute/item access, callables, context managers, and so on. I'll compare this set to languages like C, Lisp, Java, C++, and JavaScript, and show why it works – and where it could be better.
In design discussions around Python, the phrase "consenting adults" is often repeated. Python is designed to not prevent its users from doing anything. You can fairly freely inspect classes or even monkeypatch as needed. To balance this freedom, there is a vague, ever-changing notion of "Pythonic code", which is nevertheless quite successful in making the Python that actual programmers use quite a strict language. I'll share some insights about about how this balance works out, and how it helped make Python the language – and community – that it is today.