One other thing. The OP mentioned coming from C. If you are old enough, you will remember that many errors caught by gcc and other modern compilers used to be detected by external checkers like lint. Most Makefiles had "lint" targets in them.
So although you might associate all sorts of error detection and reporting with the compiler, there is no particular reason it must be there. Skip -- https://mail.python.org/mailman/listinfo/python-list