Although the python language has many good features, here are a few
bad features that I have encountered.
There is no requirement to declare variables, so it is possible to
mistype the name of a variable and inadvertantly create a new one or try
and refer to a non-existant one. This leads to bugs that are hard
to find, especially as much checking is deferred until run-time and only
happens if that code is executed.
The white space indentation scheme works for small code segments and a
few levels of indentation, but for large blocks of code and lots of
nested blocks it can be hard to keep track. Of course functions should
be used, but see the next issue.
There is a high execution time overhead for calling functions. Various
articles have been written to explain how to write faster python code,
but the sad fact is that often the best speed up is to move a function
body into the body of a loop. This exacerbates the previous issue and,
even then, python is not suited to computationally intensive tasks.