1 Programming in Python Language Overview. 2 Who is using it? Google (various projects) NASA (several projects) NYSE (one of only three languages "on.

Slides:



Advertisements
Similar presentations
Python Whats in a name? Snake logos and mascot notwithstanding, its named after Monty Pythons Flying Circus Humor-impaired can safely.
Advertisements

director of PythonLabs at Zope Corporation
Introduction to Python LinuxWorld - New York City - January 2002 Guido van Rossum Director of PythonLabs at Zope Corporation
Optional Static Typing Guido van Rossum (with Paul Prescod, Greg Stein, and the types-SIG)
10/10/1999© 1999 CNRI, Guido van Rossum 1 Python Workshop Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston, Virginia,
Introduction to Python Week 15. Try It Out! Download Python from Any version will do for this class – By and large they are all mutually.
A Crash Course Python. Python? Isn’t that a snake? Yes, but it is also a...
Introduction to Python Fred L. Drake, Jr.
What is a scripting language? What is Python?
Python Tidbits Python created by that guy ---> Python is named after Monty Python’s Flying Circus 1991 – Python Released 2008 – Python 2.6 / 3.0rc2.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Python: a modern hybrid A language for scripting and prototyping Balance between extensibility and powerful built-in data structures genealogy: –Setl (NYU,
Scripting languages Typically a language used for short programs to manage other programs. Interpreted, dynamically typed, permissive semantics Usually.
Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008.
C. Varela, Adapted with permission from Guido van Rossum1 Python Intro, Concurrency Carlos Varela RPI Adapted with permission from: Guido van Rossum
Python Control of Flow.
Introduction to Python Lecture 1. CS 484 – Artificial Intelligence2 Big Picture Language Features Python is interpreted Not compiled Object-oriented language.
Introduction to Python Guido van Rossum Director of PythonLabs at Zope Corporation
Introduction to Scripting Languages: Python Some slides are based upon Python Documentation - Extended.
Introduction to Python LinuxWorld - New York City - January 2002 Guido van Rossum Director of PythonLabs at Zope Corporation (Now with: Google Inc.)
November 15, 2005ICP: Chapter 7: Files and Exceptions 1 Introduction to Computer Programming Chapter 7: Files and Exceptions Michael Scherger Department.
CISC474 - JavaScript 03/02/2011. Some Background… Great JavaScript Guides: –
Python Guido van Rossum Sung-Jin Hong SPARCS
Python: Classes By Matt Wufsus. Scopes and Namespaces A namespace is a mapping from names to objects. ◦Examples: the set of built-in names, such as the.
1 Python CIS*2450 Advanced Programming Concepts Material for this lecture was developed by Dr. D. Calvert.
Copyright © 2012 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C H A P T E R 2 Input, Processing, and Output.
H3D API Training  Part 3.1: Python – Quick overview.
Introduction to Python September 26, /10/ Bioinformatics Languages Low-level, compiled languages: C, C++, Java… Pros: performance Cons:
Input, Output, and Processing
Python Lists and Such CS 4320, SPRING List Functions len(s) is the length of list s s + t is the concatenation of lists s and t s.append(x) adds.
Ch 1. A Python Q&A Session Spring Why do people use Python? Software quality Developer productivity Program portability Support libraries Component.
CIT 590 Intro to Programming First lecture on Java.
Built-in Data Structures in Python An Introduction.
Introducing Python CS 4320, SPRING Resources We will be following the Python tutorialPython tutorial These notes will cover the following sections.
C463 / B551 Artificial Intelligence Dana Vrajitoru Python.
Introduction to Python LinuxWorld - New York City - January 2002 Guido van Rossum Director of PythonLabs at Zope Corporation (Now with: Google Inc.)
Python Functions.
Introduction to OOP OOP = Object-Oriented Programming OOP is very simple in python but also powerful What is an object? data structure, and functions (methods)
Introducing Python CS 4320, SPRING Lexical Structure Two aspects of Python syntax may be challenging to Java programmers Indenting ◦Indenting is.
An Introduction. What is Python? Interpreted language Created by Guido Van Rossum – early 90s Named after Monty Python
Python I Some material adapted from Upenn cmpe391 slides and other sources.
Prof. Hilfinger CS164 Lecture 51 The Pyth Language Lecture 5.
Overview The Basics – Python classes and objects Procedural vs OO Programming Entity modelling Operations / methods Program flow OOP Concepts and user-defined.
Python Primer 1: Types and Operators © 2013 Goodrich, Tamassia, Goldwasser1Python Primer.
CS105 Computer Programming PYTHON (based on CS 11 Python track: lecture 1, CALTECH)
Introduction to Python Dr. José M. Reyes Álamo. 2 Three Rules of Programming Rule 1: Think before you program Rule 2: A program is a human-readable set.
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.
By Austin Laudenslager AN INTRODUCTION TO PYTHON.
Programmeren 1 6 september 2010 HOORCOLLEGE 2: INTERACTIE EN CONDITIES PROGRAMMEREN 1 6 SEPTEMBER 2009 Software Systems - Programming - Week.
CSE 130 : Winter 2009 Programming Languages Lecture 11: What’s in a Name ?
12. MODULES Rocky K. C. Chang November 6, 2015 (Based on from Charles Dierbach. Introduction to Computer Science Using Python and William F. Punch and.
Introduction to Programming Oliver Hawkins. BACKGROUND TO PROGRAMMING LANGUAGES Introduction to Programming.
1 Python K. Naik, M. Raju and S. Bhatkar December 3, 2002 CMSC 631.
Introduction to Scripting Languages: Python Some slides are based upon Python Documentation - Extended.
PYTHON PROGRAMMING. WHAT IS PYTHON?  Python is a high-level language.  Interpreted  Object oriented (use of classes and objects)  Standard library.
11/04/2009 © 1999 CNRI, Guido van Rossum 1 Python Crash Course Original Document : Python Workshop
Zope Concepts - Python scripts Valentin Baciu Finsiel Romania Tirana, 6 June 2005.
Introduction to Programming with Python
Python Bryce Boe.
CS-104 Final Exam Review Victor Norman.
Introduction to Python
Java Programming Language
Introduction to Python
Introduction to Python
Overview of OOP Terminology
Python I Some material adapted from Upenn cmpe391 slides and other sources.
Python Primer 1: Types and Operators
Introduction to Python LinuxWorld - New York City - January 2002
Programming in Python Language Overview
Presentation transcript:

1 Programming in Python Language Overview

2 Who is using it? Google (various projects) NASA (several projects) NYSE (one of only three languages "on the floor") Industrial Light & Magic (everything) Yahoo! (Yahoo mail & groups) RealNetworks (function and load testing) RedHat (Linux installation tools) LLNL, Fermilab (steering scientific applications) Zope Corporation (content management) ObjectDomain (embedded Jython in UML tool) Alice project at CMU (accessible 3D graphics) More success stories at

3 Language properties Everything is an object Packages, modules, classes, functions Exception handling Dynamic typing, polymorphism Static scoping Operator overloading Indentation for block structure –Otherwise conventional syntax

4 High-level data types Numbers: int, long, float, complex Strings Lists and dictionaries: containers Other types for e.g. binary data, regular expressions Extension modules can define new “built-in” data types

5 Interfaces to... XML –DOM, expat –XMLRPC, SOAP, Web Services Relational databases –MySQL, PostgreSQL, Oracle, ODBC, Sybase, Informix Java (via Jython) Objective C COM, DCOM (.NET too) Many GUI libraries –cross-platform Tk, wxWindows, GTK, Qt –platform-specific MFC, Mac (classic, Cocoa), X11

6 Compared to Perl Easier to learn –very important for infrequent users More readable code More maintainable code Fewer “magical” side effects More “safety” guarantees Better Java integration

7 Compared to Java Code up to 5 times shorter –and more readable Dynamic typing Multiple inheritance, operator overloading Quicker development –no compilation phase –less typing Yes, it may run a bit slower –but development is much faster –and Python uses less memory (studies show) Similar (but more so) for C/C++

8 Jython Seamless integration with Java Separate implementation Implements the same language Different set of standard modules differences in “gray areas” –e.g. some different calls –different command line options, etc.

9 Jython's Java integration Interactive Compiles directly to Java bytecode Import Java classes directly Subclass Java classes –pass instances back to Java Java beans integration Can compile into Java class files

10 Basic Python Tutorial shell (introduces numbers, strings, variables) lists (arrays), dictionaries (hashes), tuples variable semantics control structures, functions classes & methods standard library: –files: open(), readline(), read(), readlines(), write(), close(), flush(), seek(), tell(), open() again –os, os.path, sys, string, UserDict, StringIO, getopt

11 Interactive “Shell” Great for learning the language Great for experimenting with the library Great for testing your own modules Type statements or expressions at prompt: >>> print "Hello, world" Hello, world >>> x = 12**2 >>> x/2 72 >>> # this is a comment

12 Python is Interactive >>> 2** >>> 2** >>>import string >>> string.find("abc", "c") 2

13 Python cares about indentation >>> if isAlpha("a"):... print "a character!"... else:... print "not a character!"... a character! >>>

14 Python is case-sensitive, dynamically typed… >>> len("test") 4 >>> LEN("test") NameError: name 'LEN' is not defined >>> len("test")> >>> len("test")< >>> len

15 Define functions with def def isAlpha(ch): return (len(ch)==1) and \ (string.find(string.letters,ch)>=0) def dumpWords(self): """ dumps words and word frequencies """ for word in self.wordList: print word,\ self.dictionary[word]

16 In Python “everything is an object” As we saw, including functions Type(1) -> Dir(1) -> … list of functions on ints

17 Python has good data type support for … None -- the ‘null’ value Ints Float Strings ( import string ) Lists (AI likes lists…) Tuples (non-mutable lists) Functions Dictionaries (hash tables, AI likes these)

18 Numbers The usual notations and operators 12, 3.14, 0xFF, 0377, (-1+2)*3/4**5, abs(x), 0<x<=5 C-style shifting & masking 1<<16, x&0xff, x|1, ~x, x^y Integer division truncates 1/2 -> 0# float(1)/2 -> 0.5 Long (arbitrary precision), complex 2L**100 -> L 1j**2 -> (-1+0j)

19 Strings "hello"+"world""helloworld"# concatenation "hello"*3"hellohellohello" # repetition "hello"[0]"h"# indexing "hello"[-1]"o"# (from end) "hello"[1:4]"ell"# slicing len("hello")5# size "hello" < "jello"1# comparison "e" in "hello"1# search "escapes: \n etc, \033 etc, \xff etc" 'single quotes' '''triple quotes''' r"raw strings"

20 Python lists >>> a=[1,2,3] >>> b=[a,a,a] >>> a [1, 2, 3] >>> b [[1, 2, 3], [1, 2, 3], [1, 2, 3]] >>> a.append(4) >>> a [1, 2, 3, 4]

21 Python lists a = [99, "bottles of beer", ["on", "the", "wall"]] Flexible arrays, not Lisp-like linked lists Same operators as for strings a+b, a*3, a[0], a[-1], a[1:], len(a) Item and slice assignment a[0] = 98 a[1:2] = ["bottles", "of", "beer"] -> [98, "bottles", "of", "beer", ["on", "the", "wall"]] del a[-1]# -> [98, "bottles", "of", "beer"]

22 More list operations >>> a = range(5)# [0,1,2,3,4] >>> a.append(5)# [0,1,2,3,4,5] >>> a.pop()# [0,1,2,3,4] 5 >>> a.insert(0, 5.5)# [5.5,0,1,2,3,4] >>> a.pop(0)# [0,1,2,3,4] 5.5 >>> a.reverse()# [4,3,2,1,0] >>> a.sort()# [0,1,2,3,4]

23 Python dictionaries >>> d={} >>> d['test'] = 1 >>> d['test'] 1 >>> d[3]=100 >>> d[4] KeyError: 4 >>> d.get(4,0) 0

24 Dictionaries – Hash Tables Hash tables, "associative arrays" d = {"duck": "eend", "water": "water"} Lookup: d["duck"] -> "eend" d["back"] # raises KeyError exception Delete, overwrite : del d["water"] # {"duck": "eend", "back": "rug"} d["duck"] = "duik" # {"duck": "duik", "back": "rug"}

25 More dictionary operations Keys, values, items: d.keys() -> ["duck", "back"] d.values() -> ["duik", "rug"] d.items() -> [("duck","duik"), ("back","rug")] Presence check: d.has_key("duck") -> 1; d.has_key("spam") -> 0 Values of any type; keys almost any {"name":"Guido", "age":43, ("hello","world"):1, 42:"yes", "flag": ["red","white","blue"]}

26 Dictionary details Keys must be immutable: –numbers and strings of immutables these cannot be changed after creation –reason is hashing (fast lookup technique) –not lists or other dictionaries these types of objects can be changed "in place" –no restrictions on values Keys will be listed in arbitrary order –again, because of hashing

27 Python Tuples Look (sorta) like Scheme/Lisp lists for syntax But can’t be changed >>> a=(1,2,3) >>> a.append(4) AttributeError: 'tuple' object has no attribute 'append’

28 Python Tuples key = (lastname, firstname) point = x, y, z # parent's optional x, y, z = point lastname = key[0] singleton = (1,) # trailing comma! empty = () # parentheses! tuples vs. lists; tuples immutable

29 Variables No need to declare Need to assign (initialize) use of un-initialized variable raises exception Not typed if friendly: greeting = "hello world" else: greeting = 12**2 print greeting Everything is a variable: functions, modules, classes

30 Reference semantics Assignment manipulates references x = y does not make a copy of y x = y makes x reference the object y references Very useful; but beware! Example: >>> a = [1, 2, 3]; b = a >>> a.append(4); print b [1, 2, 3, 4]

31 a 123 b a 123 b 4 a = [1, 2, 3] a.append(4) b = a a 123 Changing a shared list

32 a 1 b a 1 b a = 1 a = a+1 b = a a 1 2 Changing an integer old reference deleted by assignment (a=...) new int object created by add operator (1+1)

33 Control structures if condition: statements [elif condition: statements]... [else: statements] while condition: statements for var in sequence: statements break continue

34 Grouping indentation Python: for i in range(20): if i%3 == 0: print i if i%5 == 0: print "Bingo!" print "---" C: for (i = 0; i < 20; i++) { if (i%3 == 0) { printf("%d\n", i); if (i%5 == 0) { printf("Bingo!\n"); } } printf("---\n"); } 0 Bingo! Bingo!

35 Functions, procedures def name(arg1, arg2,...): "documentation"# optional statements return# from procedure return expression# from function

36 Example function def gcd(a, b): "greatest common divisor" while a != 0: a, b = b%a, a# parallel assignment return b >>> gcd.__doc__ 'greatest common divisor' >>> gcd(12, 20) 4

37 Classes class name: "documentation" statements -or- class name(baseclass1, baseclass2,...):... Typically, statements contains method definitions: def name(self, arg1, arg2,...):... May also contain class variable assignments

38 You can define classes with class The class system changed in Python 2.2, be sure to use the “new style classes,” which inherit from object >>> class foo(object):... pass >>> a = foo() >>> type(a)

39 Creating classes - walk thru class Integer(object): """ example class """ # doc string # note use of self variable: def __init__(self,ivalue): # special name self.__ivalue=ivalue # field names def getIntValue(self): # read accessor return self.__ivalue def setIntValue(self,ivalue): #write accessor self.__ivalue=ivalue # set up attribute intValue=property(getIntValue,setIntValue)

40 Example class class Stack: "A well-known data structure…" def __init__(self):# constructor self.items = [] def push(self, x): self.items.append(x)# the sky is the limit def pop(self): x = self.items[-1]# what happens if it’s empty? del self.items[-1] return x def empty(self): return len(self.items) == 0# Boolean result

41 Using classes >>> x=Integer(1000) >>> x.getIntValue() 1000 >>> x.setIntValue(10) >>> x.intValue 10 >>> x.intValue=500 >>> x.intValue 500

42 Using classes To create an instance, simply call the class object: x = Stack() To use methods of the instance, call using dot notation: x.empty()# -> 1 x.push(1)# [1] x.empty()# -> 0 x.push("hello")# [1, "hello"] x.pop()# -> "hello"# [1] To inspect instance variables, use dot notation: x.items# -> [1]

43 Subclassing class FancyStack(Stack): "stack with added ability to inspect inferior stack items" def peek(self, n): "peek(0) returns top; peek(-1) returns item below that; etc." size = len(self.items) assert 0 <= n < size# test precondition return self.items[size-1-n]

44 Subclassing class LimitedStack(FancyStack): "fancy stack with limit on stack size" def __init__(self, limit): self.limit = limit FancyStack.__init__(self)# base class constructor def push(self, x): assert len(self.items) < self.limit FancyStack.push(self, x)# "super" method call

45 Class & instance variables class Connection: verbose = 0# class variable def __init__(self, host): self.host = host# instance variable def debug(self, v): self.verbose = v# make instance variable! def connect(self): if self.verbose:# class or instance variable? print "connecting to", self.host

46 Modules Collection of stuff in foo.py file –functions, classes, variables Importing modules: –import string; print string.join(L) –from string import join; print join(L) Rename after import: –import string; s = string; del string

47 Packages Collection of modules in directory Must have __init__.py file May contain subpackages Import syntax: –from P.Q.M import foo; print foo() –from P.Q import M; print M.foo() –import P.Q.M; print P.Q.M.foo()

48 Catching Exceptions try: print 1/x except ZeroDivisionError, message: print "Can’t divide by zero:" print message

49 Try-Finally: Cleanup f = open(file) try: process_file(f) finally: f.close()# always executed print "OK"# executed on success only

50 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

51 End of Lecture