Python 2 or Python 3?
    Python 3.6 (Except for dataclasses and asyncio that require version 3.7).

What is the best way to use it?
    I keep the text file open on separate desktop at all times. It is also in a different text editor than the one I usually use, so it's easier to switch to with Ctrl+↹ / ⌘↹. Cheatsheet consists of minimal text and short examples so things are easy to find with Ctrl+F / ⌘F. If you're on the webpage, searching for '#<name>' will only search for the titles.

    I also keep the Python console open at all times to test little snippets of code, to check out the available functions of a module using code completion and above all, to use help(<module/object/function/type/str>) command. If something is still unclear, then I search the Python docs by googling 'python docs <module/function>'.

What does the '<type>' signify?
    It is a placeholder for an object. It needs to be replaced by an expression, literal or a variable that returns/is of that type.

Why the '<type>' semantics?
    It makes examples much less ambiguous.

Why are some basics like '<list> = [<el_1>, <el_2>, ...]' and '<el> = <list>[<int>]' missing?
    This cheatsheet is not intended for complete beginners. This way it can save some valuable space. Nonetheless, it tries to be simple enough to be useful for somebody who completed the introductory course. A nice one-page cheatsheet that can help you get started can be found here.

What exactly is <el>?
    El is short for element and can be any object, but it usually denotes an object that is an item of a collection.

What exactly is <collection>?
    Collection is my name for an iterable object. An iterable object in Python is any object that has at least one of iter() and getitem() special methods defined. By convention, <object>.__iter__() should return an iterator of object's items and <object>.__getitem__(<index>) an item at that index. I chose not to use the name iterable because it sounds scarier and more vague than collection, even though it has a precise definition.

    To make matters a bit more confusing, an abstract base class called Iterable doesn't fully follow this definition. An expression instanceof(<object>, collections.abc.Iterable) only checks whether an object has iter() special method, disregarding the getitem().

    Although collection has no definition in Python's glossary, there exists a Collection abstract base class. Expression instanceof(<object>, collections.abc.Collection) returns 'True' for any object that has len(), iter() and contains() special methods defined. <object>.__len__() should return the number of elements and <object>.__contains__(<el>) should check if object contains the passed element.

What about PEP 8?
    Check out Google Style Guide and use Ctrl+Alt+L / ⌥⌘L shortcut in PyCharm to automatically reformat code.

Why are there no blank lines between method definitions?
    This way classes can be copy-pasted into the Python console, which would otherwise raise IndentationError.

Why are import statements, virtual environments and tests not covered?
    Check out The Hitchhiker’s Guide to Python for a nice overview of the mentioned topics.

Why are Flask and Django not covered?
    Maybe they will be in the future. For now, here is a nice Django cheatsheet.

Why are there no concrete Regex examples?
    Regular expressions are a separate technology that is independent from Python. There are many resources available online.

Why is there no old style string formating?
    Because it is redundant and I don't want to encourage its use.

Why is staticmethod decorator not covered in Class section?
    Because it is of very limited use and is easy to mix up with classmethod.

Why are descriptors not covered?
    Because property decorator is sufficient for everyday use.