210 likes | 481 Views
Guy Griffiths. Introduction to Python. What is Python?. General purpose interpreted programming language Widely used by scientists and programmers of all stripes Supported by many 3 rd -party libraries (currently 21,054 on the main python package website) Free!.
E N D
Guy Griffiths Introduction to Python
What is Python? • 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!
Why is it well-suited to science? • 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
What is Python not? • 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)
Who uses Python? • Yahoo Maps/Groups • Google • NASA • ESRI • Linux distros • Met Office • Me
I’m bored now. Show me something cool that Python can do. • How about several cool things that Python can do?
Why is Python better than what I use now? • It can do everything • Fast mathematical operations • Easy file manipulation • Format conversion • Plotting • Scripting • Command line • OK, not everything • Write papers for you
Why is Python better than what I use now? • 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 • printis 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.
Why is Python better than what I use now? • 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
Why is Python better than what I use now? • 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
Great. So are you volunteering to rewrite all my existing code? • 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.
Why is Python better than what I use now? • 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?”
More code! • Let’s have a look at a few python libraries in action
How can I get Python? • 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]
How can I learn Python? • 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/
Some recommended books • Python Essential Reference David M. Beazley (Addison Wesley) • Programming in Python 3: A Complete Introduction to the Python LanguageMark Summerfield (Addison Wesley) • Learning PythonMark Lutz (O’Reilly Media)