I found the short article Align the happy path to the left edge quite helpful in improving readability of functions. Briefly, reading down the left edge of the function should step you through the logic of the happy path scenario. Errors and special cases are nested in conditionals, or decanted into separate functions.
The article was written with Go in mind but I believe this approach could be applied to other languages, Python in particular. But do any of the guidelines below, taken directly from the article, break Python conventions (sometimes called Pythonic idioms)?
Align the happy path to the left; you should quickly be able to scan down one column to see the expected execution flow.
Don’t hide happy path logic inside [nested indents]
Exit early from your function
Avoid else returns; consider flipping the if statement
Put the happy return statement as the very last line
Extract functions and methods to keep bodies small and readable
If you need big indented bodies, consider giving them their own function
I don't think 5, 6 or 7 are at all controversial. Are there existing guidelines or conventions that contradict any of 1-4?
gofmt
enforces the use of tabs for indentation. So 1-tab indent, not 8-space. You can configure your editor to render tabs however large you want. I hear some people like setting their tab-width to 3!