I'm considering making the switch from MATLAB to Python. The application is quantitative trading and cost is not really an issue. There are a few things I love about MATLAB and am wondering how Python stacks up (could not find any answers in the reviews I've read).
Is there an IDE for Python that is as good as MATLAB's (variable editor, debugger, profiler)? I've read good things about Spyder, but does it have a profiler?
When you change a function on the path in MATLAB, it is automatically reloaded. Do you have to manually re-import libraries when you change them, or can this been done automatically? This is a minor thing, but actually greatly improves my productivity.
IDE: No. Python IDEs are nowhere near as good or mature as MATLAB's, though I've heard good things about Wing IDE. Generally, I find IDEs to be total overkill for Python development, and find that I'm more productive with a well-setup text editor (vim in my case) and a separate visual debugger (WinPDB).
Changing functions: Modules must be reloaded after changes using the
reload() built-in function.
import foo #now you've changed foo.py and want to reload it foo = reload(foo)
I've switched over myself from MATLAB to Python, because I find that Python deals much better with complexity, i.e., I find it easier to write, debug and maintain complex code in Python. One of the reasons for this is that Python is a general purpose language rather than a specialist matrix-manipulation language. Because of this, entities like strings, non-numerical arrays and (crucially) associative arrays (or maps or dictionaries) are first-class constructs in Python, as are classes.
With regards to capabilities, with NumPy, SciPy and Matplotlib, you pretty much have the whole set of functionality that MATLAB provides out of the box, and quite a lot of stuff that you would have to buy separate toolboxes for.
I've been getting on very well with the Spyder IDE in the Python(x,y) distribution. I'm a long term user of Matlab and have known of the existence of Python for 10 years or so but it's only since I installed Python(x,y) that I've started using Python regularly.