More often than not, with python and other dynamic languages, the main source of bugs is not knowing the type of the variable you're dealing right now or what it contains at this point. Setting up breakpoints can be troublesome especially if your IDE/editor is not the one launching your process (attaching to PID is often not trivial). Strongly typed language often obscures logic with verbose syntax, that's where a debugger comes in handy. Compiled languages often only have a single start point and a debugger is more useful than print statement.