Python: An Introduction Python: An Introduction
Python: An Introduction Python: An Introduction
Python: An Introduction Python: An Introduction
Introduction
Running Python
Python Programming
• Data types
• Control flows
• Classes, functions, modules
Hands-on Exercises
The PPT/WORD format of this presentation is available here:
http://its2.unc.edu/divisions/rc/training/scientific/
/afs/isis/depts/its/public_html/divisions/rc/training/scientific/short_courses/
its.unc.edu 2
Course Goals
its.unc.edu 3
What is python?
its.unc.edu 4
Timeline
its.unc.edu 5
Language properties
Everything is an object
Modules, classes, functions
Exception handling
Dynamic typing, polymorphism
Static scoping
Operator overloading
Indentation for block structure
its.unc.edu 6
High-level data types
its.unc.edu 7
Why learn python?
its.unc.edu 8
Why learn python? (cont.)
its.unc.edu 9
Where to use python?
• Easier to learn
important for occasional users
• More readable code
improved code maintenance
• Fewer “magical” side effects
• More “safety” guarantees
• Better Java integration
• Less Unix bias
its.unc.edu 11
Python vs. Java
Introduction
Running Python
Python Programming
• Data types
• Control flows
• Classes, functions, modules
Hands-on Exercises
The PPT/WORD format of this presentation is available here:
http://its2.unc.edu/divisions/rc/training/scientific/
/afs/isis/depts/its/public_html/divisions/rc/training/scientific/short_courses/
its.unc.edu 13
Running Python Interactively
Start python by typing "python"
• /afs/isis/pkg/isis/bin/python
^D (control-D) exits
% python
>>> ^D
%
Comments start with ‘#’
>>> 2+2 #Comment on the same line as text
4
>>> 7/3 #Numbers are integers by default
2
>>> x = y = z = 0 #Multiple assigns at once
>>> z
0
its.unc.edu 14
Running Python Programs
In general
% python ./myprogram.py
Can also create executable scripts
• Compose the code in an editor like vi/emacs
% vi ./myprogram.py # Python scripts with the suffix .py.
• Then you can just type the script name to execute
% python ./myprogram.py
The first line of the program tells the OS how to execute it:
#! /afs/isis/pkg/isis/bin/python
• Make the file executable:
% chmod +x ./myprogram.py
• Then you can just type the script name to execute
% ./myprogram.py
its.unc.edu 15
Running Python Programs
Interactively
Suppose the file script.py contains the following lines:
print 'Hello world'
x = [0,1,2]
Let's run this script in each of the ways described on the last slide:
python -i script.py
Hello world
>>> x
[0,1,2]
$ python
>>> execfile('script.py')
>>> x
[0,1,2]
its.unc.edu 16
Running Python Programs
Interactively
Suppose the file script.py contains the following lines:
print 'Hello world'
x = [0,1,2]
Let's run this script in each of the ways described on the last slide:
python
>>> import script # DO NOT add the .py suffix. Script is a module here
>>> x
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'x' is not defined
>>> script.x # to make use of x, we need to let Python know which
#module it came from, i.e. give Python its context
[0,1,2]
its.unc.edu 17
Running Python Programs
Interactively
# Pretend that script.py contains multiple stored quantities. To promote x(and
only x) to the top level context, type the following:
$ python
>>> from script import x
Hello world
>>> x
[0,1,2]
>>>
# To promote all quantities in script.py to the top level context, type
from script import * into the interpreter. Of course, if that's what
you want, you might as well type python -i script.py into the
terminal.
>>> from script import *
its.unc.edu 18
File naming conventions
its.unc.edu 19
Comments
its.unc.edu 20
Agenda
Introduction
Running Python
Python Programming
• Data types
• Control flows
• Classes, functions, modules
Hands-on Exercises
The PPT/WORD format of this presentation is available here:
http://its2.unc.edu/divisions/rc/training/scientific/
/afs/isis/depts/its/public_html/divisions/rc/training/scientific/short_courses/
its.unc.edu 21
Python Syntax
its.unc.edu 22
Simple data types
Numbers
• Integer, floating-point, complex!
Strings
• characters are strings of length 1
its.unc.edu 23
Numbers
its.unc.edu 24
Strings and formatting
i = 10
d = 3.1415926
s = "I am a string!"
print “newline\n"
No need to declare
Need to assign (initialize)
use of uninitialized variable raises exception
Not typed
if friendly: greeting = "hello world"
else: greeting = 12**2
print greeting
Everything is a variable:
functions, modules, classes
its.unc.edu 26
Reference semantics
its.unc.edu 27
Simple data types:
operators
+ - * / % (like C)
+= -= etc. (no ++ or --)
Assignment using =
• but semantics are different!
a = 1
a = "foo" # OK
Can also use + to concatenate strings
its.unc.edu 28
Strings
its.unc.edu 29
Simple Data Types
its.unc.edu 30
Methods in string
its.unc.edu 31
Compound Data Type: List
List:
• A container that holds a number of other objects,
in a given order
• Defined in square brackets
a = [1, 2, 3, 4, 5]
print a[1] # number 2
some_list = []
some_list.append("foo")
some_list.append(12)
print len(some_list) # 2
its.unc.edu 32
List
its.unc.edu 33
More list operations
its.unc.edu 34
Operations in List
its.unc.edu 35
Nested List
List in a list
E.g.,
• >>> s = [1,2,3]
• >>> t = [‘begin’, s, ‘end’]
• >>> t
• [‘begin’, [1, 2, 3], ‘end’]
• >>> t[1][1]
•2
its.unc.edu 36
Dictionaries
Dictionaries: curly brackets
• What is dictionary?
Refer value through key; “associative arrays”
• Like an array indexed by a string
• An unordered set of key: value pairs
• Values of any type; keys of almost any type
{"name":"Guido", "age":43, ("hello","world"):1,
42:"yes", "flag": ["red","white","blue"]}
d = { "foo" : 1, "bar" : 2 }
print d["bar"] # 2
some_dict = {}
some_dict["foo"] = "yow!"
print some_dict.keys() # ["foo"]
its.unc.edu 37
Methods in Dictionary
keys()
values()
items()
has_key(key)
clear()
copy()
get(key[,x])
setdefault(key[,x])
update(D)
popitem()
its.unc.edu 38
Dictionary details
its.unc.edu 39
Tuples
What is a tuple?
• A tuple is an ordered collection which cannot
be modified once it has been created.
• In other words, it's a special array, a read-only array.
How to make a tuple? In round brackets
• E.g.,
>>> t = ()
>>> t = (1, 2, 3)
>>> t = (1, )
>>> t = 1,
>>> a = (1, 2, 3, 4, 5)
>>> print a[1] # 2
its.unc.edu 40
Operations in Tuple
its.unc.edu 41
List vs. Tuple
its.unc.edu 43
Data Type Wrap Up
its.unc.edu 44
Input
its.unc.edu 45
File I/O
f = file("foo", "r")
line = f.readline()
print line,
f.close()
# Can use sys.stdin as input;
# Can use sys.stdout as output.
its.unc.edu 46
Files: Input
its.unc.edu 47
Files: Output
its.unc.edu 48
open() and file()
its.unc.edu 49
OOP Terminology
its.unc.edu 51
Defining a class
class Thingy:
self.value = value
method
def showme(self):
its.unc.edu 52
Using a class (1)
its.unc.edu 53
Using a class (2)
its.unc.edu 54
"Special" methods
its.unc.edu 55
Control flow (1)
if, if/else, if/elif/else
if a == 0:
print "zero!"
elif a < 0:
print "negative!"
else:
print "positive!"
Notes:
• blocks delimited by indentation!
• colon (:) used at end of lines containing control flow keywords
its.unc.edu 56
Control flow (3)
while loops
a = 10
while a > 0:
print a
a -= 1
its.unc.edu 57
Control flow (4)
for loops
for a in range(10):
print a
a = [3, 1, 4, 1, 5, 9]
for i in range(len(a)):
print a[i]
its.unc.edu 59
Control flow (6)
its.unc.edu 60
Control flow (7): odds &
ends
def foo(x):
y = 10 * x + 2
return y
All variables are local unless
specified as global
Arguments passed by value
its.unc.edu 62
Executing functions
def foo(x):
y = 10 * x + 2
return y
its.unc.edu 63
Why use modules?
Code reuse
• Routines can be called multiple times within a
program
• Routines can be used from multiple programs
Namespace partitioning
• Group data together with functions used for that
data
Implementing shared services or data
• Can provide global data structure that is accessed by
multiple subprograms
its.unc.edu 64
Modules
Modules are functions and variables defined in separate files
Items are imported using from or import
from module import function
function()
import module
module.function()
Modules are namespaces
• Can be used to organize variable names, i.e.
atom.position = atom.position - molecule.position
its.unc.edu 65
Modules
print math.sqrt(2.0)
or:
from math import sqrt
print sqrt(2.0)
its.unc.edu 66
Modules
or:
from math import *
print sqrt(2.0)
its.unc.edu 67
Example: NumPy Modules
http://numpy.scipy.org/
NumPy has many of the features of Matlab, in a free, multiplatform
program. It also allows you to do intensive computing operations in a
simple way
Numeric Module: Array Constructors
• ones, zeros, identity
• arrayrange
LinearAlgebra Module: Solvers
• Singular Value Decomposition
• Eigenvalue, Eigenvector
• Inverse
• Determinant
• Linear System Solver
its.unc.edu 68
Arrays and Constructors
>>> a = ones((3,3),float)
>>> print a
[[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]]
>>> b = zeros((3,3),float)
>>> b = b + 2.*identity(3) #"+" is overloaded
>>> c = a + b
>>> print c
[[3., 1., 1.],
[1., 3., 1.],
[1., 1., 3.]]
its.unc.edu 69
Overloaded operators
>>> b = 2.*ones((2,2),float) #overloaded
>>> print b
[[2.,2.],
[2.,2.]]
>>> b = b+1 # Addition of a scalar is
>>> print b # element-by-element
[[3.,3.],
[3.,3.]]
>>> c = 2.*b # Multiplication by a scalar is
>>> print c # element-by-element
[[6.,6.],
[6.,6.]]
its.unc.edu 70
Array functions
>>> from LinearAlgebra import *
>>> a = zeros((3,3),float) + 2.*identity(3)
>>> print inverse(a)
[[0.5, 0., 0.],
[0., 0.5, 0.],
[0., 0., 0.5]]
>>> print determinant(inverse(a))
0.125
>>> print diagonal(a)
[0.5,0.5,0.5]
>>> print diagonal(a,1)
[0.,0.]
• transpose(a), argsort(), dot()
its.unc.edu 71
Eigenvalues
its.unc.edu 72
Least Squares Fitting
Part of Hinsen's Scientific Python module
>>> from LeastSquares import *
>>> def func(params,x): # y=ax^2+bx+c
return params[0]*x*x + params[1]*x +
params[2]
>>> data = []
>>> for i in range(10):
data.append((i,i*i))
>>> guess = (3,2,1)
>>> fit_params, fit_error =
leastSquaresFit(func,guess,data)
>>> print fit_params
[1.00,0.000,0.00]
its.unc.edu 73
FFT
>>> from FFT import *
>>> data = array((1,0,1,0,1,0,1,0))
>>> print fft(data).real
[4., 0., 0., 0., 4., 0., 0., 0.]]
Also note that the FFTW package ("fastest Fourier transform in the
West") has a python wrapper. See notes at the end
Python Standard Libraries/Modules:
• http://docs.python.org/library/
• http://its2.unc.edu/dci/dci_components/shared_apps/packages
/python_packages.html
• http://pypi.python.org/pypi/
its.unc.edu 74
Command-line arguments
import sys
print len(sys.argv) # NOT argc
# Print all arguments:
print sys.argv
# Print all arguments but the program
# or module name:
print sys.argv[1:] # "array slice"
its.unc.edu 75
Catching Exceptions
#python code a.py
x = 0
try:
print 1/x
except ZeroDivisionError, message:
print "Can’t divide by zero:"
print message
>>>python a.py
Can't divide by zero:
integer division or modulo by zero
its.unc.edu 76
Try-Finally: Cleanup
f = open(file)
try:
process_file(f)
finally:
f.close() # always executed
print "OK" # executed on success only
its.unc.edu 77
Raising Exceptions
raise IndexError
raise IndexError("k out of range")
raise IndexError, "k out of range”
try:
something
except: # catch everything
print "Oops"
raise # reraise
its.unc.edu 78
Python: Pros & Cons
Pros
• Free availability (like Perl, Python is open source).
• Stability (Python is in release 2.6 at this point and, as I noted earlier, is older
than Java).
• Very easy to learn and use
• Good support for objects, modules, and other reusability mechanisms.
• Easy integration with and extensibility using C and Java.
Cons
• Smaller pool of Python developers compared to other languages, such as Java
• Lack of true multiprocessor support
• Absence of a commercial support point, even for an Open Source project
(though this situation is changing)
• Software performance slow, not suitable for high performance applications
its.unc.edu 79
References
• Python Homepage
• http://www.python.org
• Python Tutorial
• http://docs.python.org/tutorial/
• Python Documentation
• http://www.python.org/doc
• Python Library References
http://docs.python.org/release/2.5.2/lib/lib.html
• Python Add-on Packages:
http://pypi.python.org/pypi
its.unc.edu 80
Questions & Comments
Please
Pleasedirect
directcomments/questions
comments/questionsabout
aboutresearch
researchcomputing
computingtoto
E-mail:
E-mail:[email protected]
[email protected]
Please
Pleasedirect
directcomments/questions
comments/questionspertaining
pertainingtotothis
thispresentation
presentationtoto
E-Mail:
E-Mail:[email protected]
[email protected]
its.unc.edu
Hands-On Exercises
26 codes at /netscr/training/Python
Copy to your own /netscr/$USER
Read, understand, and then run them
Suggested order:
• hello, input, print, readwrite
• number, string_test, sort
• list, dictionary, tuple, function, class
• loop, fact, …
• calculator, guess, prime_number
• matrix, opt, leastsq
The PPT/WORD format of this presentation is available here:
http://its2.unc.edu/divisions/rc/training/scientific/
its.unc.edu /afs/isis/depts/its/public_html/divisions/rc/training/scientific/short_courses/ 82