# Awesome Zen of Python [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

This is a collection of awesome resources related to 
[the Zen of Python (PEP 20)](https://www.python.org/dev/peps/pep-0020/) 
aka [The Python Way](https://mail.python.org/pipermail/python-list/1999-June/001951.html) 
by [Tim Peters](https://en.wikipedia.org/wiki/Tim_Peters_(software_engineer)) 

    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one:obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea: let's do more of those!
    
### Articles
* [Chaitanya Baweja: Contemplating the Zen of Python](https://medium.com/better-programming/contemplating-the-zen-of-python-186722b833e5)
* [Radomir Dopieralski: Zen of Python Considered Harmful](http://sheep.art.pl/Zen%20of%20Python%20Considered%20Harmful)
* [Aamir Farooq, Vadim Zaytsev: There Is More Than One Way to Zen Your Python](https://dl.acm.org/doi/10.1145/3486608.3486909)
* [Jonathan M. Hammond: A Brief Analysis of “The Zen of Python”](https://medium.com/@Pythonidaer/a-brief-analysis-of-the-zen-of-python-2bfd3b76edbf)
* [Abdur-Rahmaan Janhangeer: The Zen Of Python Is A Joke And Here Is Why](https://dev.to/abdurrahmaanj/the-zen-of-python-is-a-joke-and-here-is-why-you-should-not-take-it-too-seriously-508d)
* [Abdur-Rahmaan Janhangeer: The Zen of Python: As Related by Masters](https://dev.to/abdurrahmaanj/the-zen-of-python-as-related-by-masters-1p9i)
* [Dima Kotik: Application Security and the Zen of Python](https://www.securityjourney.com/post/application-security-and-the-zen-of-python)
* [Łukasz Langa: Zen of Python, Again](https://lukasz.langa.pl/b6888f38-2e14-4595-a4fe-187fd0557a55/)
* [Adrienne Lowe: The Zen of Python Teams: COVID-19 edition](https://leadingwithspoons.com/2020/07/15/the-zen-of-python-teams-covid-19-edition/) [(see also the talk)](https://www.youtube.com/watch?v=WZ8FEB4J8-c)
* [Reinout van Rees: “Complex” and “complicated”](https://reinout.vanrees.org/weblog/2015/12/21/complex-complicated.html)
* [Al Sweigart: The Zen of Python, Explained](https://inventwithpython.com/blog/2018/08/17/the-zen-of-python-explained/)
* [Moshe Zadka: Meditations on the Zen of Python [that's summary, individual articles below]](https://orbifold.xyz/zen-of-python.html)
  * [Why your Python code needs to be beautiful and explicit](https://opensource.com/article/19/12/zen-python-beauty-clarity)
  * [Prioritizing simplicity in your Python code](https://opensource.com/article/19/12/zen-python-simplicity-complexity)
  * [Why your Python code should be flat and sparse](https://opensource.com/article/19/12/zen-python-flat-sparse)
  * [Making trade-offs when writing Python code](https://opensource.com/article/19/12/zen-python-trade-offs)
  * [How the Zen of Python handles errors](https://opensource.com/article/19/12/zen-python-errors)
  * [The importance of consistency in your Python code](https://opensource.com/article/19/12/zen-python-consistency)
  * [The Zen of Python: Why timing is everything](https://opensource.com/article/19/12/zen-python-timeliness)
  * [How to tell if implementing your Python code is a good idea](https://opensource.com/article/19/12/zen-python-implementation)
  * [Namespaces are the shamash candle of the Zen of Python](https://opensource.com/article/19/12/zen-python-namespaces)

### Talks
* [Raymond Hettinger: Beyond PEP 8 -- Best practices for beautiful intelligible code](https://www.youtube.com/watch?v=wf-BqAjZb8M)
* [Łukasz Langa: Life Is Better Painted Black](https://www.youtube.com/watch?v=esZLCuWs_2Y)
* [Adrienne Lowe: The Zen of Python for Teams](https://www.youtube.com/watch?v=WZ8FEB4J8-c) [(see also the article)](https://leadingwithspoons.com/2020/07/15/the-zen-of-python-teams-covid-19-edition/)
* [Justin Mayer: Zen of Python Dependency Management](https://www.youtube.com/watch?v=asL0dbN6pAY)
* [Christopher Neugebauer: Practicality Beats Purity: The Zen of Python’s Escape Hatch?](https://youtu.be/XU9_3AlCy84)
* [Rudolf Olah: Python as a philosophy](https://www.youtube.com/watch?v=zkjYOKLvZko)
* [Kenneth Reitz: Python For Humans](https://www.youtube.com/watch?v=Y97D8j6CAog)

### Tools
* [Black - The uncompromising Python code formatter](https://github.com/psf/black)
* [Obey your Zen with wemake-python-styleguide](https://github.com/wemake-services/wemake-python-styleguide)

### Other
* [Fundamental philosophies Django’s developers have used in creating the framework](https://docs.djangoproject.com/en/dev/misc/design-philosophies/)
* [Yannis Rizos: Is the 14th line of The Zen of Python a reference to Dijkstra? (stackoverflow answer)](https://softwareengineering.stackexchange.com/a/148794)
* [Bug #3364: I'm afraid you missed the joke](https://bugs.python.org/issue3364)

###### And now for something completely different
* [import that](https://github.com/pydanny/that)
* [PEP 8 song, written and performed by Leon Sandøy, A.K.A. lemonsaurus; music and melody from Mad World by Roland Orzabal](https://www.youtube.com/watch?v=hgI0p1zf31k)
* [Zen of git](https://tdhopper.com/blog/zen-of-git/)
* [Zen of Python song, lyrics by Tim Peters 1999, music and arrangement by Barry Warsaw 2020](https://www.youtube.com/watch?v=i6G6dmVJy74)
