This page collects various online tutorials to the core Python package (including Numpy). This page is designed to make you a better Python programmer, not a better scientific python programmer. Other pages will do that.
Python Tutorial - http://docs.python.org/tutorial/
- This is the canonical Python tutorial. It is suitable for someone who has no experience with programming, but is probably about right for someone who knows a little bit of some other language. It contains the first steps of using Python, especially about how to make use of the interactive features, putting things in files, and so on. Highly recommended.
Numpy tutorial - http://www.scipy.org/Tentative_NumPy_Tutorial
- Good introductory starting point. Reading is highly recommended.
Numpy for Matlab users - http://www.scipy.org/NumPy_for_Matlab_Users
- At the least, this points out various assumptions that Numpy makes different from matlab.
The Python Standard Library - http://docs.python.org/2/library/index.html
- This lists every function and data type included in Python. There is too much here to be able to read it all (and the vast majority won't be relevant to your work, no matter what your field is), but if you just browse the table of contents, you will know what exists if you need it. If you are ever reading some other tutorial or documentation and see a nice function or feature, try coming here and reading about the module that contains it. You'll learn about a lot more similar functions. Generally useful (but long):
Built-in functions - http://docs.python.org/2/library/functions.html
Built-in types - http://docs.python.org/2/library/stdtypes.html
Python style guide - http://www.python.org/dev/peps/pep-0008/
Docstring conventions - http://www.python.org/dev/peps/pep-0257/
What's new in Python 3? - http://docs.python.org/release/3.0.1/whatsnew/3.0.html
- Even if you aren't going to use Python 3 anytime soon, it's good to know what is new in it. It teaches you a bit more about Python, and also allows you to write python code in a way that is easier to upgrade later, when it comes time.
For more "What's new" goodness, see http://docs.python.org/release/3/whatsnew/index.html . It's nice to read what's new in the newest versions of the language. But however, try to stick several releases behind in your compatibility. Better to maintain universal compatibility than save a line.
Python speed - http://wiki.python.org/moin/PythonSpeed
- For most things, you should emphasize beauty over speed (and then speed will be easy and natural). These links provide some hints on that
http://wiki.python.org/moin/TimeComplexity - short page on time complexity of operations on built-in data types
http://wiki.python.org/moin/PythonSpeed/PerformanceTips - good page with lots of ideas for faster (and more beautiful sometimes, too) code.
Numpy reference - http://docs.scipy.org/doc/numpy/reference/
- This is very long, but you can browse it to know what is available. The first few sections may be useful to reinforce some basics, and the rest you just look very briefly at anything that looks interesting.
Scipy reference - http://docs.scipy.org/doc/scipy/reference/
- Again, not worth trying to read straight through, but when you need it, come here. These docs aren't always as good as they should be.
- Python and C
- Python (at least CPython, what most of us use) is written in C, and all python functions and data types are layers above C functions and C structs. Knowing a little bit about how those C things work can help you understand Python. While this isn't a high priority, it will make you a better programmer. When reading this, try to understand two things: How reference counting works, and how the C functions work with Python arguments.
Extending and Embedding the Python Interpreter - http://docs.python.org/2/extending/index.html
- This is a tutorial on writing C modules which can be imported into Python. It will teach you a lot about what is going on behind the scenes.
Python/C API reference - http://docs.python.org/2/c-api/index.html#c-api-index
- This is the reference manual behind all C functions which Python uses internally. You don't need to know this in great detail, but the "introduction" section here elaborates on concepts in Extending and Embedding tutorial nicely.
Zen of Python - http://www.python.org/dev/peps/pep-0020/
- Fun little poem-like thing that does just what it says.
Why is Python worth it? - http://www.linuxjournal.com/article/3882
- A well known hacker describes the experience of coming to understand why Python makes your work more efficient.
Python for scientific work - http://www.stat.washington.edu/~hoytak/blog/whypython.html
These links look interesting but haven't been analyzed in detail yet