# Python basics

* [**The Python Tutorial**](https://docs.python.org/3/tutorial/index.html)\
  The official Python tutorial is written in a way that makes it compact and easy to assimilate. \
  There are individual chapters for:\
  \- [control flows](https://docs.python.org/3/tutorial/controlflow.html) (e.g. `if`,`for`, `break`, `pass` etc)\
  \- [data structures](https://docs.python.org/3/tutorial/datastructures.html) (lists, tuples, sets, dictionaries)\
  \- [modules and packages](https://docs.python.org/3/tutorial/modules.html)\
  \- [input / output](https://docs.python.org/3/tutorial/inputoutput.html)\
  \- [errors and exceptions](https://docs.python.org/3/tutorial/errors.html)\
  \- [classes](https://docs.python.org/3/tutorial/classes.html)\
  \- [virtual environments](https://docs.python.org/3/tutorial/venv.html)\
  and a few more topics.\
  \
  I found this guide really useful to read once. Read the basics, just glean over the intricacies, come back to the guide when yo feel like some details were removed from your memory during the regular cleanups.<br>
* [**Python FAQ**](https://docs.python.org/3/faq/design.html#design-and-history-faq)\
  This is a long list of answers to questions about peculiarities we notice in Python. \
  \
  For example: '[Why does Python use indentation for grouping of statements?](https://docs.python.org/3/faq/design.html#why-does-python-use-indentation-for-grouping-of-statements)'  or  '[Why are there separate tuple and list data types?](https://docs.python.org/3/faq/design.html#why-are-there-separate-tuple-and-list-data-types)'\
  I actually had the second question myself. I will not ruin the pleasure of finding out by yourself:drum:<br>
* [**Python Glossary**](https://docs.python.org/3/glossary.html#glossary)\
  A list of popular concepts in Python and a short explanation for each of them.\
  \
  For example: \
  **decorator**

  A function returning another function, usually applied as a function transformation using the `@wrapper` syntax. Common examples for decorators are [`classmethod()`](https://docs.python.org/3/library/functions.html#classmethod) and [`staticmethod()`](https://docs.python.org/3/library/functions.html#staticmethod). \
  The decorator syntax is merely syntactic sugar, the following two function definitions are semantically equivalent:

  ```
  def f(arg):
      ...
  f = staticmethod(f)

  @staticmethod
  def f(arg):
      ...
      
  ```

  It's a good place to quickly read about things like `iterable`, `iterator`, `list comprehension` or `set comprehension, hashtable` or the `GIL,` to give just a few example of popular concepts that are found in this list.&#x20;
