Python Tutorial Adapted from slides by Prof. Mitch Marcus.

Slides:



Advertisements
Similar presentations
Container Types in Python
Advertisements

Python Objects and Classes
Learn Python in three hours
Lists Introduction to Computing Science and Programming I.
1 Chapter 4 Language Fundamentals. 2 Identifiers Program parts such as packages, classes, and class members have names, which are formally known as identifiers.
Introduction to Python
Introduction to Python II CIS 391: Artificial Intelligence Fall, 2008.
Python 3 Some material adapted from Upenn cis391 slides and other sources.
Functions in Python. The indentation matters… First line with less indentation is considered to be outside of the function definition. Defining Functions.
Introduction to Python II CSE-391: Artificial Intelligence University of Pennsylvania Matt Huenerfauth January 2005.
CSC 9010: Natural Language Processing
Python 3 Some material adapted from Upenn cis391 slides and other sources.
Python Control of Flow.
1 Python Control of Flow and Defining Classes LING 5200 Computational Corpus Linguistics Martha Palmer.
Python: A Simple Tutorial CIS 530 – Fall 2010  Highly adapted from slides for CIS 530 originally by Prof. Mitch Marcus  I am your course TA (Varun Aggarwala)
Introduction to Python
Data Structures in Python By: Christopher Todd. Lists in Python A list is a group of comma-separated values between square brackets. A list is a group.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 2 Input, Processing, and Output.
Introduction to Python III CSE-391: Artificial Intelligence University of Pennsylvania Matt Huenerfauth January 2005.
Introduction to Python I CSE-391: Artificial Intelligence University of Pennsylvania Matt Huenerfauth January 2005.
Input, Output, and Processing
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
Collecting Things Together - Lists 1. We’ve seen that Python can store things in memory and retrieve, using names. Sometime we want to store a bunch of.
Python I Some material adapted from Upenn cmpe391 slides and other sources.
Built-in Data Structures in Python An Introduction.
Getting Started with Python: Constructs and Pitfalls Sean Deitz Advanced Programming Seminar September 13, 2013.
Data TypestMyn1 Data Types The type of a variable is not set by the programmer; rather, it is decided at runtime by PHP depending on the context in which.
Introducing Python CS 4320, SPRING Resources We will be following the Python tutorialPython tutorial These notes will cover the following sections.
Python uses boolean variables to evaluate conditions. The boolean values True and False are returned when an expression is compared or evaluated.
Python Functions.
_______________________________________________________________________________________________________________ PHP Bible, 2 nd Edition1  Wiley and the.
Introducing Python CS 4320, SPRING Lexical Structure Two aspects of Python syntax may be challenging to Java programmers Indenting ◦Indenting is.
Copyright Curt Hill Variables What are they? Why do we need them?
Python I Some material adapted from Upenn cmpe391 slides and other sources.
Introduction to Python III CIS 391: Artificial Intelligence Fall, 2008.
Python Primer 1: Types and Operators © 2013 Goodrich, Tamassia, Goldwasser1Python Primer.
CS105 Computer Programming PYTHON (based on CS 11 Python track: lecture 1, CALTECH)
Jim Havrilla. Invoking Python Just type “python –m script.py [arg]” or “python –c command [arg]” To exit, quit() or Control-D is used To just use the.
Python Let’s get started!.
Python I Some material adapted from Upenn cmpe391 slides and other sources.
CS190/295 Programming in Python for Life Sciences: Lecture 6 Instructor: Xiaohui Xie University of California, Irvine.
Introduction to Programming Oliver Hawkins. BACKGROUND TO PROGRAMMING LANGUAGES Introduction to Programming.
Quiz 3 Topics Functions – using and writing. Lists: –operators used with lists. –keywords used with lists. –BIF’s used with lists. –list methods. Loops.
1 Python Data Structures LING 5200 Computational Corpus Linguistics Martha Palmer.
1 Agenda  Unit 7: Introduction to Programming Using JavaScript T. Jumana Abu Shmais – AOU - Riyadh.
String and Lists Dr. José M. Reyes Álamo. 2 Outline What is a string String operations Traversing strings String slices What is a list Traversing a list.
PYTHON PROGRAMMING. WHAT IS PYTHON?  Python is a high-level language.  Interpreted  Object oriented (use of classes and objects)  Standard library.
FILES AND EXCEPTIONS Topics Introduction to File Input and Output Using Loops to Process Files Processing Records Exceptions.
Lecture III Syntax ● Statements ● Output ● Variables ● Conditions ● Loops ● List Comprehension ● Function Calls ● Modules.
Ruby: An Introduction Created by Yukihiro Matsumoto in 1993 (named after his birthstone) Pure OO language (even the number 1 is an instance of a class)
Python 3 Some material adapted from Upenn cis391 slides and other sources.
Introduction to Python
Containers and Lists CIS 40 – Introduction to Programming in Python
Introduction Python is an interpreted, object-oriented and high-level programming language, which is different from a compiled one like C/C++/Java. Its.
Java Primer 1: Types, Classes and Operators
CS-104 Final Exam Review Victor Norman.
Python is a general-purpose interpreted, interactive, object-oriented, and high-level programming language. It was created by Guido van Rossum during.
Adapted from slides by Prof. Mitch Marcus
Python I Some material adapted from Upenn cmpe391 slides and other sources.
Introduction to Python
Python I Some material adapted from Upenn cmpe391 slides and other sources.
Introduction to Python
CS190/295 Programming in Python for Life Sciences: Lecture 6
PHP.
CMSC 202 Java Primer 2.
Python I Some material adapted from Upenn cmpe391 slides and other sources.
Python Tutorial for C Programmer Boontee Kruatrachue Kritawan Siriboon
Python I Some material adapted from Upenn cmpe391 slides and other sources.
Python Primer 1: Types and Operators
Introduction to Computer Science
Presentation transcript:

Python Tutorial Adapted from slides by Prof. Mitch Marcus

Python  Python is an open source scripting language.  Developed by Guido van Rossum in the early 1990s  Named after Monty Python  Available on eniac  Available for download from

Why Python?  Object Oriented  With functional constructs: map, generators, list comprehension  NLP Processing: Symbolic  Python has built-in datatypes for strings, lists, and more  NLP Processing: Statistical  Python has strong numeric processing capabilities: matrix operations, etc.  Suitable for probability and machine learning code.  NLTK: Natural Language Tool Kit  Widely used for teaching NLP  First developed for this course  Implemented as a set of Python modules  Provides adequate libraries for many NLP building blocks  Google "NLTK" for more info, code, data sets, book..

Why Python?  Powerful but unobtrusive object system  Every value is an object  Classes guide but do not dominate object construction  Powerful collection and iteration abstractions  Dynamic typing makes generics easy

Python  Interpreted language: works with an evaluator for language expressions  Dynamically typed: variables do not have a predefined type  Rich, built-in collection types:  Lists  Tuples  Dictionaries (maps)  Sets  Concise

Language features  Indentation instead of braces  Newline separates statements  Several sequence types  Strings '…' : made of characters, immutable  Lists […] : made of anything, mutable  Tuples (…) : made of anything, immutable  Powerful subscripting (slicing)  Functions are independent entities (not all functions are methods)  Exceptions

Dynamic typing  Java/C++: statically typed  Variables are declared to refer to objects of a given type  Methods use type signatures to enforce contracts  Python  Variables come into existence when first assigned to  A variable can refer to an object of any type  All types are (almost) treated the same way  Main drawback: type errors are only caught at runtime

Playing with Python (1) >>> >>> 2/3 0 >>> 2.0/ >>> x=4.5 >>> int(x) 4

Playing with Python (2) >>> x='abc' >>> x[0] 'a' >>> x[1:3] 'bc' >>> x[:2] 'ab' >>> x[1]='d' Traceback (most recent call last): File " ", line 1, in x[1]='d' TypeError: 'str' object does not support item assignment

Playing with Python (3) >>> x=['a','b','c'] >>> x[1] 'b' >>> x[1:] ['b', 'c'] >>> x[1]='d' >>> x ['a', 'd', 'c']

Playing with Python (4) >>> def p(x): if len(x) < 2: return True else: return x[0] == x[-1] and p(x[1:-1]) >>> p('abc') False >>> p('aba') True >>> p([1,2,3]) False >>> p([1,'a','a',1]) True >>> p((False,2,2,False)) True >>> p(('a',1,1)) False

Python dictionaries (Maps) >>> d={'alice':1234, 'bob':5678, 'clare':9012} >>> d['alice'] 1234 >>> d['bob'] 5678 >>> d['bob'] = 7777 >>> d {'clare': 9012, 'bob': 7777, 'alice': 1234} >>> d.keys() ['clare', 'bob', 'alice'] >>> d.items() [('clare', 9012), ('bob', 7777), ('alice', 1234)] >>> del d['bob'] >>> d {'clare': 9012, 'alice': 1234}

Installing & Running Python

The Python Interpreter  Interactive interface to Python % python Python 2.6 (r26:66714, Feb , 20:49:49) [GCC [gcc-4_3-branch revision ]] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>  Python interpreter evaluates inputs: >>> 3*(7+2) 27

IDLE Development Environment  Shell for interactive evaluation.  Text editor with color-coding and smart indenting for creating Python files.  Menu commands for changing system settings and running files.

Running Interactively on Linux On Unix… % python >>>  Python prompts with '>>>'.  To exit Python (not Idle):  In Unix, type CONTROL-D  In Windows, type CONTROL-Z +

Running Programs on UNIX % python filename.py You can make a python file executable by adding following text as the first line of the file to make it runable: #!/usr/bin/python

The Basics

A Code Sample x = # A comment. y = "Hello" # Another one. z = 3.45 if z == 3.45 or y == "Hello": x = x + 1 y = y + " World" # String concat. print x print y

Enough to Understand the Code  Indentation matters to the meaning of the code:  Block structure indicated by indentation  The first assignment to a variable creates it.  Variable types don't need to be declared.  Python figures out the variable types on its own.  Assignment uses = and comparison uses ==.  For numbers + - * / % are as expected.  Special use of + for string concatenation.  Special use of % for string formatting (as with printf in C)  Logical operators are words ( and, or, not ) not symbols  Simple printing can be done with print.

Basic Datatypes  Integers (default for numbers) z = 5 / 2 # Answer is 2, integer division.  Floats x =  Strings  Can use "" or '' to specify. "abc" 'abc' (Same thing.)  Unmatched can occur within the string. "matt's"  Use triple double-quotes for multi-line strings or strings than contain both ' and " inside of them: """a'b"c"""

Whitespace Whitespace is meaningful in Python: especially indentation and placement of newlines.  Use a newline to end a line of code.  Use \ when must go to next line prematurely.  No braces { } to mark blocks of code in Python… Use consistent indentation instead.  The first line with less indentation is outside of the block.  The first line with more indentation starts a nested block  Often a colon appears at the start of a new block. (E.g. for function and class definitions.)

Comments  Start comments with # – the rest of line is ignored.  Can include a "documentation string" as the first line of any new function or class that you define.  The development environment, debugger, and other tools use it: it's good style to include one def my_function(x, y): """This is the docstring. This function does blah blah blah.""" # The code would go here...

Assignment  Binding a variable in Python means setting a name to hold a reference to some object.  Assignment creates references, not copies  Names in Python do not have an intrinsic type. Objects have types.  Python determines the type of the reference automatically based on what data is assigned to it.  You create a name the first time it appears on the left side of an assignment expression: x = 3  A reference is deleted via garbage collection after any names bound to it have passed out of scope.  Python uses reference semantics

Naming Rules  Names are case sensitive and cannot start with a number. They can contain letters, numbers, and underscores. bob Bob _bob _2_bob_ bob_2 BoB  There are some reserved words: and, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while

Accessing Non-Existent Name  Trying to access a name before it's been properly created (by placing it on the left side of an assignment), gives an error: >>> y Traceback (most recent call last): File " ", line 1, in -toplevel- y NameError: name 'y' is not defined >>> y = 3 >>> y 3

Sequence types Tuples, Lists and Strings

Sequence Types 1. Tuple  A simple immutable ordered sequence of items  Items can be of mixed types, including collection types 2. Strings  Immutable  Conceptually very much like a tuple  (8-bit characters. Unicode strings use 2-byte characters.) 3. List  Mutable ordered sequence of items of mixed types

Similar Syntax  All three sequence types (tuples, strings, and lists) share much of the same syntax and functionality.  Key difference:  Tuples and strings are immutable  Lists are mutable  The operations shown in this section can be applied to all sequence types  most examples will just show the operation performed on one

Sequence Types  Tuples are defined using parentheses (and commas). >>> tu = (23, 'abc', 4.56, (2,3), 'def')  Lists are defined using square brackets (and commas). >>> li = ["abc", 34, 4.34, 23]  Strings are defined using quotes (", ', or """). >>> st = "Hello World" >>> st = 'Hello World' >>> st = """This is a multi-line string that uses triple quotes."""

Sequence Types  We can access individual members of a tuple, list, or string using square bracket "array" notation.  Note that all are 0 based… >>> tu = (23, 'abc', 4.56, (2,3), 'def') >>> tu[1] # Second item in the tuple. 'abc' >>> li = ["abc", 34, 4.34, 23] >>> li[1] # Second item in the list. 34 >>> st = "Hello World" >>> st[1] # Second character in string. 'e'

Positive and negative indices >>> t = (23, 'abc', 4.56, (2,3), 'def') Positive index: count from the left, starting with 0. >>> t[1] 'abc' Negative lookup: count from right, starting with –1. >>> t[-3] 4.56

Slicing: Return Copy of a Subset >>> t = (23, 'abc', 4.56, (2,3), 'def') Return a copy of the container with a subset of the original members. Start copying at the first index, and stop copying before the second index. >>> t[1:4] ('abc', 4.56, (2,3)) You can also use negative indices when slicing. >>> t[1:-1] ('abc', 4.56, (2,3))

Slicing: Return Copy of a Subset >>> t = (23, 'abc', 4.56, (2,3), 'def') Omit the first index to make a copy starting from the beginning of the container. >>> t[:2] (23, 'abc') Omit the second index to make a copy starting at the first index and going to the end of the container. >>> t[2:] (4.56, (2,3), 'def')

The 'in' Operator  Boolean test whether a value is inside a collection (often called a container in Python: >>> t = [1, 2, 4, 5] >>> 3 in t False >>> 4 in t True >>> 4 not in t False  For strings, tests for substrings >>> a = 'abcde' >>> 'c' in a True >>> 'cd' in a True >>> 'ac' in a False  Be careful: the in keyword is also used in the syntax of for loops and list comprehensions.

The + Operator  The + operator produces a new tuple, list, or string whose value is the concatenation of its arguments. >>> (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) >>> [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] >>> "Hello" + " " + "World" 'Hello World'

Mutability: Tuples vs. Lists

Lists: Mutable >>> li = ['abc', 23, 4.34, 23] >>> li[1] = 45 >>> li ['abc', 45, 4.34, 23]  We can change lists in place.  Name li still points to the same memory reference when we're done.

Tuples: Immutable >>> t = (23, 'abc', 4.56, (2,3), 'def') >>> t[2] = 3.14 Traceback (most recent call last): File " ", line 1, in -toplevel- tu[2] = 3.14 TypeError: object doesn't support item assignment You can't change a tuple. You can make a fresh tuple and assign its reference to a previously used name. >>> t = (23, 'abc', 3.14, (2,3), 'def')  The immutability of tuples means they're faster than lists.

Operations on Lists Only 1 >>> li = [1, 11, 3, 4, 5] >>> li.append('a')# Note the method syntax >>> li [1, 11, 3, 4, 5, 'a'] >>> li.insert(2, 'i') >>>li [1, 11, 'i', 3, 4, 5, 'a']

The extend method vs the + operator  + creates a fresh list (with a new memory reference)  extend operates on list li in place. >>> li.extend([9, 8, 7]) >>>li [1, 2, 'i', 3, 4, 5, 'a', 9, 8, 7] Confusing:  extend takes a list as an argument.  append takes a singleton as an argument. >>> li.append([10, 11, 12]) >>> li [1, 2, 'i', 3, 4, 5, 'a', 9, 8, 7, [10, 11, 12]]

Operations on Lists Only 3 >>> li = ['a', 'b', 'c', 'b'] >>> li.index('b') # index of first occurrence * 1 * more complex forms exist >>> li.count('b') # number of occurrences 2 >>> li.remove('b') # remove first occurrence >>> li ['a', 'c', 'b']

Operations on Lists Only 4 >>> li = [5, 2, 6, 8] >>> li.reverse() # reverse the list *in place* >>> li [8, 6, 2, 5] >>> li.sort() # sort the list *in place* >>> li [2, 5, 6, 8] >>> li.sort(some_function) # sort in place using user-defined comparison

Summary: Tuples vs. Lists  Lists slower but more powerful than tuples.  Lists can be modified, and they have lots of handy operations we can perform on them.  Tuples are immutable and have fewer features.  To convert between tuples and lists use the list() and tuple() functions: li = list(tu) tu = tuple(li)

Dictionaries: a mapping collection type

Dictionaries: A Mapping type  Dictionaries store a mapping between a set of keys and a set of values.  Keys can be any immutable type.  Values can be any type  Values and keys can be of different types in a single dictionary  You can  define  modify  view  lookup  delete the key-value pairs in the dictionary.

Creating and accessing dictionaries >>> d = {'user':'bozo', 'pswd':1234} >>> d['user'] 'bozo' >>> d['pswd'] 1234 >>> d['bozo'] Traceback (innermost last): File ' ' line 1, in ? KeyError: bozo

Updating Dictionaries >>> d = {'user':'bozo', 'pswd':1234} >>> d['user'] = 'clown' >>> d {'user':'clown', 'pswd':1234}  Keys must be unique.  Assigning to an existing key replaces its value. >>> d['id'] = 45 >>> d {'user':'clown', 'id':45, 'pswd':1234}  Dictionaries are unordered  New entry might appear anywhere in the output.  (Dictionaries work by hashing)

Removing dictionary entries >>> d = {'user':'bozo', 'p':1234, 'i':34} >>> del d['user'] # Remove one. >>> d {'p':1234, 'i':34} >>> d.clear() # Remove all. >>> d {} >>> a=[1,2] >>> del a[1]# (del also works on lists) >>> a [1]

Useful Accessor Methods >>> d = {'user':'bozo', 'p':1234, 'i':34} >>> d.keys() # List of current keys ['user', 'p', 'i'] >>> d.values() # List of current values ['bozo', 1234, 34] >>> d.items() # List of item tuples. [('user','bozo'), ('p',1234), ('i',34)]

Functions in Python (Methods later)

Python and Types Python determines the data types of variable bindings in a program automatically."Dynamic Typing" But objects have types and Python enforces the types of objects. "Strong Typing" So, for example, you can't just append an integer to a string. You must first convert the integer to a string itself. x = "the answer is " # Decides x is bound to a string. y = 23 # Decides y is bound to an integer. print x + y # Python will complain about this.

Calling a Function  The syntax for a function call is: >>> def myfun(x, y): return x * y >>> myfun(3, 4) 12  Parameters are passed by “Call by Value”  Each argument expression is evaluated and the resulting value is bound to the corresponding variable in the function (which is a new one for each invocation)  All assignment in Python, including binding function parameters, use reference semantics, since values are all object references.  Many web discussions on this are simply confused and call it “call by assignment” or “call by sharing”.

Functions without returns  All functions in Python have a return value  even if no return line inside the code.  Functions without a return return the special value None.  None is a special constant in the language.  None is used like NULL, void, or nil in other languages.  None is also logically equivalent to False.  The interpreter doesn't print None

Function overloading? No.  There is no function overloading in Python.  Unlike C++, a Python function is specified by its name alone  The number, order, names, or types of its arguments cannot be used to distinguish between two functions with the same name.  Two different functions can't have the same name, even if they have different arguments.  But: see operator overloading in later slides

Functions are first-class objects in Python  Functions can be used as any other data type  They can be  Arguments to function  Return values of functions  Assigned to variables  Parts of tuples, lists, etc  … >>> def myfun(x): return x*3 >>> def applier(q, x): return q(x) >>> applier(myfun, 7) 21

Logical Expressions

True and False  True and False are constants in Python.  Other values equivalent to True and False :  False : zero, None, empty container or object  True : non-zero numbers, non-empty objects  Comparison operators: ==, !=, <, <=, etc.  X and Y have same value: X == Y  Compare with X is Y :  X and Y are two variables that refer to the identical same object.

Boolean Logic Expressions  You can also combine Boolean expressions.  True if a is True and b is True : a and b  True if a is True or b is True : a or b  True if a is False : not a  Use parentheses as needed to disambiguate complex Boolean expressions.  Actually, evaluation of expressions is lazy…

Special Properties of and and or  Actually and and or don't return True or False.  They return the value of one of their sub-expressions (which may be a non-Boolean value).  X and Y and Z  If all are true, returns value of Z.  Otherwise, returns value of first false sub-expression.  X or Y or Z  If all are false, returns value of Z.  Otherwise, returns value of first true sub-expression.  and and or use lazy evaluation, so no further expressions are evaluated

Conditional Expressions x = true_value if condition else false_value  Evaluation rule:  First, condition is evaluated  If True, true_value is evaluated and returned  If False, false_value is evaluated and returned

Control of Flow

if Statements if x == 3: print "X equals 3." elif x == 2: print "X equals 2." else: print "X equals something else." print "This is outside the 'if'." Be careful! The keyword if is also used in the syntax of filtered list comprehensions. Note:  Use of indentation for blocks  Colon (:) after boolean expression

while Loops >>> x = 3 >>> while x < 5: print x, "still in the loop" x = x still in the loop 4 still in the loop >>> x = 6 >>> while x < 5: print x, "still in the loop" >>>

break and continue  You can use the keyword break inside a loop to leave the while loop entirely.  You can use the keyword continue inside a loop to stop processing the current iteration of the loop and to immediately go on to the next one.

assert  An assert statement will check to make sure that something is true during the course of a program.  If the condition if false, the program stops (more accurately: the program throws an exception) assert(number_of_players < 5)

For Loops

For Loops / List Comprehensions  Python's list comprehensions provide a natural idiom that usually requires a for-loop in other programming languages.  As a result, Python code uses many fewer for-loops  Nevertheless, it's important to learn about for-loops.  Caveat! The keywords for and in are also used in the syntax of list comprehensions, but this is a totally different construction.

For Loops 1  For-each is Python's only for construction  A for loop steps through each of the items in a collection type, or any other type of object which is "iterable" for in :  If is a list or a tuple, then the loop steps through each element of the sequence.  If is a string, then the loop steps through each character of the string. for someChar in "Hello World": print someChar

For Loops 2 for in :  can be more complex than a single variable name.  When the elements of are themselves sequences, then can match the structure of the elements.  This multiple assignment can make it easier to access the individual parts of each element. for (x, y) in [(a,1), (b,2), (c,3), (d,4)]: print x

For loops and the range() function  Since a variable often ranges over some sequence of numbers, the range() function returns a list of numbers from 0 up to but not including the number we pass to it.  range(5) returns [0,1,2,3,4]  So we could say: for x in range(5): print x  (There are more complex forms of range() that provide richer functionality…)  xrange() returns an iterator that provides the same functionality here more efficiently

For Loops and Dictionaries >>> ages = { "Sam " :4, "Mary " :3, "Bill " :2 } >>> ages {'Bill': 2, 'Mary': 3, 'Sam': 4} >>> for name in ages.keys(): print name, ages[name] Bill 2 Mary 3 Sam 4 >>>

String Operations  A number of methods for the string class perform useful formatting operations: >>> "hello".upper() 'HELLO'  Check the Python documentation for many other handy string operations.  Helpful hint: use.strip() to strip off final newlines from lines read from files

Printing with Python  You can print a string to the screen using "print."  Using the % string operator in combination with the print command, we can format our output text. >>> print "%s xyz %d" % ("abc", 34) abc xyz 34 "Print" automatically adds a newline to the end of the string. If you include a list of strings, it will concatenate them with a space between them. >>> print "abc">>> print "abc", "def" abcabc def  Useful trick: >>> print "abc", doesn't add newline just a single space

Convert Anything to a String  The built-in str() function can convert an instance of any data type into a string.  You can define how this function behaves for user-created data types. You can also redefine the behavior of this function for many types. >>> "Hello " + str(2) "Hello 2"

Importing and Modules

 Use classes & functions defined in another file.  A Python module is a single file with the same name (plus the.py extension)  Like Java import Where does Python look for module files?  The list of directories where Python looks: sys.path  To add a directory of your own to this list, append it to this list. sys.path.append('/my/new/path')

Import I import somefile  Everything in somefile.py can be referred to by: somefile.className.method("abc") somefile.myFunction(34)  from somefile import *  Everything in somefile.py can be referred to by: className.method("abc") myFunction(34)  Caveat! This can easily overwrite the definition of an existing function or variable!

Import II from somefile import className  Only the item className in somefile.py gets imported.  Refer to it without a module prefix.  Caveat! This can overwrite an existing definition. className.method("abc")  This was imported myFunction(34)  Not this one

Commonly Used Modules  Some useful modules to import, included with Python:  Module: sys- Lots of handy stuff.  Maxint  Module: os- OS specific code.  Module: os.path- Directory processing.

More Commonly Used Modules  Module: math- Mathematical code.  Exponents  sqrt  Module: Random- Random number code.  Randrange  Uniform  Choice  Shuffle  To see what's in the standard library of modules, check out the Python Library Reference:   Or O'Reilly's Python in a Nutshell:   (URL works inside of UPenn, afaik, otherwise see the course web page)

Object Oriented Programming in Python: Defining Classes

It's all objects…  Everything in Python is really an object.  We've seen hints of this already… "hello".upper() list3.append('a') dict2.keys()  These look like Java or C++ method calls.  Programming in Python is typically done in an object oriented fashion.

Defining a Class  A class is a special data type which defines how to build a certain kind of object.  The class also stores some data items that are shared by all the instances of this class.  But no static variables!  Python doesn't use separate class interface definitions much. You just define the class and then use it.

Methods in Classes  Define a method in a class by including function definitions within the scope of the class block.  There must be a special first argument self in all of method definitions which gets bound to the calling instance.  Self is like this in Java  Self always refers to the current class instance  A constructor for a class is a method called __init__ defined within the class.

A simple class definition: student class student: """A class representing a student.""" def __init__(self,n,a): self.full_name = n self.age = a def get_age(self): return self.age

Creating and Deleting Instances

Instantiating Objects  There is no "new" keyword as in Java.  Merely use the class name with () notation and assign the result to a variable.  __init__ serves as a constructor for the class.  Example: b = student("Bob", 21)  An __init__ method can take any number of arguments.  Like other functions & methods, arguments can be defined with default values, making them optional to the caller.  But no real overloading

Self  Although you must specify self explicitly when defining the method, you don't include it when calling the method.  Python passes it for you automatically. Defining a method:Calling a method: (this code inside a class definition.) def set_age(self, num):>>> x.set_age(23) self.age = num

Access to Attributes and Methods

Definition of student class student: """A class representing a student.""" def __init__(self,n,a): self.full_name = n self.age = a def get_age(self): return self.age

Traditional Syntax for Access >>> f = student ("Bob Smith", 23) >>> f.full_name # Access an attribute. "Bob Smith" >>> f.get_age() # Access a method. 23 No public, private, protected, etc…

File Processing, Error Handling, Regular Expressions, etc.

File Processing with Python This is a good way to play with the error handing capabilities of Python. Try accessing files without permissions or with non-existent names, etc. You'll get plenty of errors to look at and play with! fileptr = open('filename') somestring = fileptr.read() for line in fileptr: print line fileptr.close() For more, see section 3.9 of the Python Library reference at

Exception Handling  Exceptions are Python classes  More specific kinds of errors are subclasses of the general Error class.  You use the following commands to interact with them:  Try  Except  Finally  Catch

Regular Expressions and Match Objects  Python provides a very rich set of tools for pattern matching against strings in module re (for regular expression)  As central as they are to much of the use of Python, we won't be using them in this course…  For a gentle introduction to regular expressions in Python see or