Mypy http://mypy-lang.org/ is the reference implementation for type hint checking. Remember, type hints have no influence at all on runtime.
Pytype: https://github.com/google/pytype Pyright: https://github.com/microsoft/pyright Pyre: https://pyre-check.org/
Debuggers
Most Python devs use an IDE like PyCharm or VSCode. Entry points for debugging are easy to set up. If you use those or any other tool, you still want to be able to load code into pdb or one of its variants:
-
pdb is the standard debugger for Python. It's part of the PSL. You want to be familiar with basic workings of this tool. But like the default Python repl, it is awkward. Use ipdb instead which uses iPython.
-
ipdb https://github.com/gotcha/ipdb lets you access ipython features. It is generally a better experience than using pdb directly.
-
pudb is a curses based debugger and might be more friendly but won't always work as reliably as ipdb. https://github.com/inducer/pudb
Repls
iPython http://ipython.org/ is the standard repl in practice for Python.
Notebooks: jupyter https://jupyter.org/ is a web application wrapper around iPython. Jupyter notebooks have revolutionised Python development by allowing much easier sharing of programming knowledge, saving your code experiments in an easier to access form and especially scientific and numerical applications.
Functional Programming
Design Patterns in Python
Software complexity
https://www.goodreads.com/book/show/39996759-a-philosophy-of-software-design
Brandon Rhodes' guide to design patterns
https://refactoring.guru/design-patterns/factory-method/python/
https://realpython.com/inheritance-composition-python/#what-are-inheritance-and-composition
https://en.wikipedia.org/wiki/Fluent_interface
https://en.wikipedia.org/wiki/Method_chaining
https://en.wikipedia.org/wiki/Method_cascading
https://mail.python.org/pipermail/python-dev/2003-October/038855.html
https://stackoverflow.com/questions/4114167/checking-if-a-number-is-a-prime-number-in-python
https://www.pythonkitchen.com/legally-free-python-books-list/
https://www.oreilly.com/programming/free/files/functional-programming-python.pdf
https://www.oreilly.com/programming/free/files/how-to-make-mistakes-in-python.pdf
https://opensource.com/article/20/5/duck-typing-python
https://treyhunner.com/2019/03/abusing-and-overusing-list-comprehensions-in-python/
Bad prime number detection
https://linuxconfig.org/function-to-check-for-a-prime-number-with-python
https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.94.6535&rep=rep1&type=pdf