Pydon'ts

Write elegant Python code

A series of articles that teaches you how to make the best use of the core Python features. The Pydon'ts are available as an e-book that you can read for free below.

This article shows you how to overload the arithmetic operators in Python with dunder methods.

Descriptors are not black magic and this article will show you that. In fact, you use descriptors every day and you don't even know it.

Learn how to use properties to add dynamic behaviour to your attributes.

This is an introduction to dunder methods in Python, to help you understand what they are and what they are for.

Let me tell you why it is impossible to truly master Python, but also show you how to get as close to it as possible.

This article compares the three main string formatting methods in Python and suggests which methods to use in each situation.

When you call a function in Python and give it some arguments... Are they passed by value? No! By reference? No! They're passed by assignment.

This Pydon't will teach you how to use Python's conditional expressions.

This Pydon't will teach you the basics of list comprehensions in Python.

This Pydon't will teach you how to use the set and frozenset Python built-in types.

In this Pydon't you'll learn how to make the best use possible of the Python REPL.

In this Pydon't you will learn the Python string methods translate and maketrans.

In this Pydon't you'll learn the importance of using good names and I'll give some tips to help you.

In this Pydon't I talk about Python style and I go over some tools you can use to help you remain within a consistent style.

In this Pydon't I show you why refactoring is important and show you how to do it in little steps, so that it doesn't become too overwhelming.

Does elegance matter when writing computer programs..?

This Pydon't walks you through the usages of the __name__ dunder method and how to use it effectively.

The purpose of this Pydon't is to show you what underscores are used for in Python, and to show you how to write more idiomatic code with them.

In this Pydon't we will take a look at the reduce function, which used to be a built-in function and is currently in the functools module.

In this Pydon't we explore what Boolean short-circuiting for the and and or operators is, and how to use this functionality to write more expressive code.

In this Pydon't we conclude the slicing trilogy and take a look at the inner workings of Python slicing, from the built-in slice type to the dunder method __getitem__ and its siblings.

In this Pydon't we cover advanced topics related to sequence slicing, like (negative) steps, more idiomatic sequence slicing, slice assignment, and slice deletion.

This article covers the basics of sequence slicing in Python and teaches you some idiomatic slicing patterns to write more elegant code.

A short article with all you need to know about sequence indexing in Python – and a bit more.

If you need to access the items of an iterable but also keep track of their indices, have you considered using enumerate? Let's talk about another of Python's amazing tools to work with for loops.

for loops are the bread and butter of imperative programming and Python has some really nice tools to work with them. If you want to traverse several structures in parallel, have you considered using zip?

Structural pattern matching is coming in Python 3.10 and the previous Pydon't explored some interesting use cases for the new match statement. This article explores situations for which match isn't the answer.

Structural pattern matching is coming in Python 3.10 and this article explores how to use it to write Pythonic code, showing the best use cases for the match statement.

Learn the ins and outs of comparison operator chaining, and especially the cases you should avoid.

Deep unpacking (or nested unpacking) provides a more powerful way for you to write assignments in your code. Deep unpacking can be used to improve the readability of your code and help protect you against unexpected bugs. Learning about deep unpacking will also be very important in order to make the most out of the structural matching feature that is to be introduced in Python 3.10.

Recursion is a technique that you should have in your programming arsenal, but that doesn't mean you should always use recursion when writing Python code. Sometimes you should convert the recursion to another programming style or come up with a different algorithm altogether.

All Python objects can be used in expressions that should return a boolean value, like in an if or while statement. Python's built-in objects are usually Falsy (interpreted as False) when they are β€œempty” or have β€œno value” and otherwise they are Truthy (interpreted as True). You can define this behaviour explicitly for your own objects if you define the __bool__ dunder method.

Python's str and repr built-in methods are similar, but not the same. Use str to print nice-looking strings for end users and use repr for debugging purposes. Similarly, in your classes you should implement the __str__ and __repr__ dunder methods with these two use cases in mind.

The walrus operator := can be really helpful, but if you use it in convoluted ways it will make your code worse instead of better. Use := to flatten a sequence of nested ifs or to reuse partial computations.

In Python, if you are doing something that may throw an error, there are many cases in which it is better to "apologise than to ask for permission". This means you should prefer using a try block to catch the error, instead of an if statement to prevent the error.

How should you unpack a list or a tuple into the first element and then the rest? Or into the last element and everything else? Pydon't unpack with slices, prefer starred assignment instead.

The "Zen of Python" is the set of guidelines that show up in your screen if you import this. If you have never read them before, read them now and again from time to time. If you are looking to write Pythonic code, write code that abides by the Zen of Python.

"Pydon'ts" are short, to-the-point, meaningful Python programming tips. Pydon'ts will help you write more Pythonic code.