Python is an interpreted, runtime typed programming language with a focus on readability and programmer productivity. Python is an object structured language – which means that everything in Python is an object. Its simple semantics, combined with its tremendous library and hardware support has made it an indispensable tool in areas as diverse as web application development, systems administration, education and scientific computing.
In a scientific/engineering context, Python is a superb tool for building “ugly” prototypes and models of systems and for performing data analysis. Third party support libraries are freely available which provide simple interfaces for graphing, linear algebra, machine learning, image analysis, and many other tasks in technical computing.
- Python.org – The Python Programming Language Website
- The Hitchhikers Guide to Python – Major list of online resources for the Python programming language
- PyVideo – Educational video on the python programming language – covers a range of topics from the mundane to the hilarious. Very Strongly Recommended.
- Python Package Index – One of the best places to look for Python libraries to do almost anything.
- IPython – Powerful exploratory computing environment for Python. Cannot recommend highly enough
- Anaconda – The Anaconda install builder is probably the fastest and most effective way to get a very complete Python development environment working on your computer. If you don’t know why you need this – you definitely need this. Provided free courtesy of the fine folks at Continuum Analytics.
- Think Python – How to think like a Computer Scientist — Very good introductory book on Python
- Learn Python The Hard Way – Another good book on learning Python. Uses a different approach than Think Python, so may be easier for some people.
- A hands-on introduction to Python for beginning programmers – A good intro video from Jessica McKellar
- A Collection of interesting IPython Notebooks – IPython notebook collection covering a huge range of interests
How to do X in Python (for some values of X):
In general, you should check out the resources in The Hitchhikers Guide to Python as well as this list.
- pycse – Python Computations in Science and Engineering — A fairly recent (2013) book on how to do scientific and technical computing in Python
- Moving from MATLAB matrices to NumPy arrays – A Cheat-sheet for moving back and forth between MATLAB and Python
- Thesaurus of Mathematical Languages, or MATLAB synonymous commands in Python/NumPy
- IPython in Depth – A three part (total ~3 hr) class on IPython (part 1, part 2, part 3)
- Python Scientific Lecture Notes – Excellent resource for doing scientific and technical computing in Python
- An Introduction to Numpy and Scipy – Good 24pp intro to this subject
Hit the “Go Fast” Button:
- PyPy – A specializing JIT for Python (Doesn’t work with NumPy yet… but it’s being worked on)
- Shedskin – A fast ahead of time compiler for Python – also doesn’t have NumPy support
- Cython – Compiles Python modules to C, then uses GCC to compile them to binaries. Works wonderfully with NumPy. Installed by default as part of Anaconda.
- RunCython – A set of tools to make working with Cython a bit more comfortable. Recommended.
- The Cython Compiler for Python – A solid talk about how to use Cython to speed up yout Python code
- Performance Python for Numerical Algorithms – A short overview of how to make Python numerics faster
- High Performance Python I – An excellent talk by Ian Ozsvald on how to make your Python code run considerably more quickly
- High Performance Python II – A very good talk on Performance by Travis Oliphant. Covers a different approach than that used by Ian Ozsvald used above.
- PyBluez – The main cross-platform library for doing Bluetooth from Python
- An Introduction to Bluetooth Programming – Covers PyBluez in chapter 3
- PySerial – A serial port interface library for Python. This package allows the use of serial ports in a standardized way on all major Python platforms (Windows, Linux, MacOS X). If you need to communicate with some embedded device over serial, this is probably what you need.
- PySerial Documentation – Should be self explanatory…
- Instrumentio – A GUI for controlling arduino based virtual devices
- PyFirmata – A library for controlling Arduino devices from Python
- Use Serial or Bluetooth to communicate with some microcontroller running your (custom) code.
- More information on all these options can be found here.