Python has its own style guide, called PEP 8, since 2001 [1]. It was written by Guido van Rossum (the creator of Python) and others and gives coding conventions for the Python code comprising the standard library in the main Python distribution [1]. Probably because it is used for the standard library and by the creator of Python, no alternative style guides were found. PEP 8 is the de facto code style guide for Python [2].
PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community [3]. Other style related PEPs are:
- PEP 7 — Style Guide for C Code [4]
 - PEP 20 — The Zen of Python [5]
 - PEP 257 — Docstring Conventions [6]
 
PEP 8 and PEP 257 (Docstring Conventions) were adapted from Guido’s original Python Style Guide essay, with some additions from Barry’s style guide [1]. A docstring is a string literal that occurs as the first statement in a module, function, class, or method definition. Such a docstring becomes the doc special attribute of that object [6].
Triple quotes are used for both One and Multi-line Docstrings. Multi-line docstrings consist of a summary line just like a one-line docstring, followed by a blank line, followed by a more elaborate description [6].
PEP 8 follows the guiding principles for Python’s design known as PEP 20 “The Zen of Pyhon” [5]. The guiding principles for Python’s design are channeld into 20 aphorisms, including:
- Explicit is better than implicit.
 - Simple is better than complex.
 - Readability counts.
 - Special cases aren’t special enough to break the rules.
 - Errors should never pass silently.
 
PEP 8 includes the following topics:
- Code Lay-out
 - String Quotes
 - Whitespace in Expressions and Statements
 - When to Use Trailing Commas
 - Comments
 - Naming Conventions
 - Programming Recommendations
 
Some of the rules are:
- Use 4 spaces per indentation level.
 - Limit all lines to a maximum of 79 characters.
 - Break a line before a binary operator.
 - Avoid extraneous whitespace:
- Immediately inside parentheses, brackets or braces.
 - Immediately before a comma, semicolon, or colon.
 
 - Class names should normally use the CapWords convention.
 - Function and variable names should be lowercase, with words separated by underscores.
 - Constants are usually defined on a module level and written in all capital letters with underscores separating words.
 
When developing PyQt applications however, there is a slight conflict with the Qt style and Python style syntaxes. Python prefers to lowercase, underscored functions, while Qt prefers to camel hump functions [7]. The PEP 8 document says what to do in this case: “New modules and packages (including third party frameworks) should be written to these standards, but where an existing library has a different style, internal consistency is preferred.” So, while you may be programming in Python, you’re creating Qt classes – inheriting their conventions along the way [7].
Tools that can help to enforce PEP 8 compliance can be divided into two classes: linters and autoformatters [8]. Linters are programs that analyze code and flag errors. Examples are pycodestyle [9], flake8 [10], and Pylint [11]. Autoformatters are programs that refactor your code to conform with PEP 8 automatically.  Examples are Black [12], autopep8 [13], and yapf [14].
 There is also a static analysis tool for checking compliance with Python docstring conventions (PEP 257), called pydocstyle (formerly pep257) [15].
- PEP 8 — Style Guide for Python Code
 - The Hitchhikers’s guide to Python
 - PEP 1 — PEP Purpose and Guidelines
 - PEP 7 — Style Guide for C Code
 - PEP 20 — The Zen of Python
 - PEP 257 — Docstring Conventions
 - PyQt Coding Style Guidelines
 - How to Write Beautiful Python Code With PEP 8
 - pycodestyle
 - flake8
 - Pylint
 - Black
 - autopep8
 - yapf
 - pydocstyle