Transcript ppt
Guy Griffiths
General purpose interpreted programming
language
Widely used by scientists and programmers of
all stripes
Supported by many 3rd-party libraries (currently
21,054 on the main python package website)
Free!
Numpy
Numerical library for python
Written in C, wrapped by python
Fast
Scipy
Built on top of numpy (i.e. Also fast!)
Common maths, science, engineering routines
Matplotlib
Hugely flexible plotting library
Similar syntax to Matlab
Produces publication-quality output
An integrated graphical environment like Matlab
(although there are tools which put it in one –
e.g. Spyder)
Specifically designed for
scientists/mathematicians (but the 3rd-party
libraries for plotting/numerical work are some of
the best around)
High performance (but it is very easy to wrap
C/Fortran libraries in Python code)
Yahoo Maps/Groups
Google
NASA
ESRI
Linux distros
Met Office
Me
How about several cool things that Python
can do?
It can do everything
Fast mathematical operations
Easy file manipulation
Format conversion
Plotting
Scripting
Command line
OK, not everything
Write papers for you
Run program
Close Matlab
Write to file
Plot/Analyze
Open Matlab
Read in file
Run program which
does plotting and
analysis (and writes
analysis to file)
Have a break
Interactive prompt is great for experimenting
iPython is a fantastic interactive environment
I mostly write code in iPython interactively, then
copy it out into a script when I’m done
print is easy and intuitive to use
Yes, you should use a proper debugger, but let’s
face it – print statements are quicker and easier.
Well, print statements in python are even quicker
and easier than that.
Readable code
You have to indent all of your loops, conditionals,
etc.
This means that your code will always be indented
in a helpful way
Inline documentation
3rd-party libraries
Numpy, Scipy, Matplotlib are standard libraries
for scientific computing
cf-python is written with meteorologists in mind
There are 3rd-party libraries for many, many things
If you want to do something that isn’t particularly
uncommon, there will be a library to do it for you
No. But python can wrap your existing
C/Fortran/R code...
You can get the benefits of a high-level language
whilst keeping your fast C/Fortran routines
This is what Numpy does (and why Numpy is fast)
...and Matlab code translates pretty easily to
python.
A good language to teach
Questions you won’t hear if you teach python:
▪ “What does ‘Segmentation fault’ mean?”
▪ “Why do I have to click ‘build’ before I run this every
time?”
▪ “Do you know where I can download a license for this so
I can use it at home?”
Questions you may still hear:
▪ “What’s a variable?”
▪ “Why do we have to do this?”
Let’s have a look at a few python libraries in
action
Firstly, get version 2.7.x. Python 3 is probably more
trouble than it’s worth right now.
Windows – Python(x,y) [www.pythonxy.com]
This is a scientific/engineering oriented distribution of
python. It includes everything you need to get started
Linux – it’s already there! Unless you’re running a very
unusual distro (in which case you probably already
know what you’re doing).
Mac – it’s already there on OS X, but it’s old. Get a
more up-to-date one [www.python.org]
The official python tutorial:
http://docs.python.org/tutorial/
Software Carpentry:
http://software-carpentry.org/
Dive into Python:
http://www.diveintopython.net/
Learn Python the Hard Way:
http://learnpythonthehardway.org/
A Byte of Python:
http://www.ibiblio.org/g2swap/byteofpython/read/
Python Essential Reference
David M. Beazley (Addison Wesley)
Programming in Python 3: A Complete
Introduction to the Python Language
Mark Summerfield (Addison Wesley)
Learning Python
Mark Lutz (O’Reilly Media)