10/10/1999© 1999 CNRI, Guido van Rossum 1 Python Workshop Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston, Virginia,

Slides:



Advertisements
Similar presentations
Numbers Treasure Hunt Following each question, click on the answer. If correct, the next page will load with a graphic first – these can be used to check.
Advertisements

Chapter 25 Lists, Stacks, Queues, and Priority Queues
Simplifications of Context-Free Grammars
3rd Annual Plex/2E Worldwide Users Conference 13A Batch Processing in 2E Jeffrey A. Welsh, STAR BASE Consulting, Inc. September 20, 2007.
1
Copyright © 2003 Pearson Education, Inc. Slide 1.
Chapter 7 Constructors and Other Tools. Copyright © 2006 Pearson Addison-Wesley. All rights reserved. 7-2 Learning Objectives Constructors Definitions.
Chapter 17 Linked Data Structures. Copyright © 2006 Pearson Addison-Wesley. All rights reserved Learning Objectives Nodes and Linked Lists Creating,
Copyright © 2003 Pearson Education, Inc. Slide 1 Computer Systems Organization & Architecture Chapters 8-12 John D. Carpinelli.
Copyright © 2003 Pearson Education, Inc. Slide 7-1 Created by Cheryl M. Hughes The Web Wizards Guide to XML by Cheryl M. Hughes.
Copyright © 2003 Pearson Education, Inc. Slide 1.
Processes and Operating Systems
Copyright © 2011, Elsevier Inc. All rights reserved. Chapter 6 Author: Julia Richards and R. Scott Hawley.
Python Whats in a name? Snake logos and mascot notwithstanding, its named after Monty Pythons Flying Circus Humor-impaired can safely.
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/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,
8 Copyright © 2005, Oracle. All rights reserved. Creating the Web Tier: JavaServer Pages.
Microsoft Access 2007 Advanced Level. © Cheltenham Courseware Pty. Ltd. Slide No 2 Forms Customisation.
Process a Customer Chapter 2. Process a Customer 2-2 Objectives Understand what defines a Customer Learn how to check for an existing Customer Learn how.
Programming Language Concepts
1 Click here to End Presentation Software: Installation and Updates Internet Download CD release NACIS Updates.
Break Time Remaining 10:00.
Turing Machines.
Table 12.1: Cash Flows to a Cash and Carry Trading Strategy.
Red Tag Date 13/12/11 5S.
ETS4 - What's new? - How to start? - Any questions?
PP Test Review Sections 6-1 to 6-6
Chapter 24 Lists, Stacks, and Queues
Chapter 1 Object Oriented Programming 1. OOP revolves around the concept of an objects. Objects are created using the class definition. Programming techniques.
EIS Bridge Tool and Staging Tables September 1, 2009 Instructor: Way Poteat Slide: 1.
Bellwork Do the following problem on a ½ sheet of paper and turn in.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Outline 24.1 Test-Driving the Ticket Information Application.
Exarte Bezoek aan de Mediacampus Bachelor in de grafische en digitale media April 2014.
Chapter 6 File Systems 6.1 Files 6.2 Directories
Copyright © 2012, Elsevier Inc. All rights Reserved. 1 Chapter 7 Modeling Structure with Blocks.
1 RA III - Regional Training Seminar on CLIMAT&CLIMAT TEMP Reporting Buenos Aires, Argentina, 25 – 27 October 2006 Status of observing programmes in RA.
Lilian Blot PART III: ITERATIONS Core Elements Autumn 2012 TPOP 1.
Adding Up In Chunks.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Synthetic.
Container Types in Python
Chapter Three Arithmetic Expressions and Assignment Statements
Types of selection structures
Lilian Blot CORE ELEMENTS SELECTION & FUNCTIONS Lecture 3 Autumn 2014 TPOP 1.
Chapter 12 Working with Forms Principles of Web Design, 4 th Edition.
Essential Cell Biology
ANSC644 Bioinformatics-Database Mining 1 ANSC644 Bioinformatics §Carl J. Schmidt §051 Townsend Hall §
PSSA Preparation.
Chapter 11 Creating Framed Layouts Principles of Web Design, 4 th Edition.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 13 Pointers and Linked Lists.
Energy Generation in Mitochondria and Chlorplasts
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.
1 Decidability continued…. 2 Theorem: For a recursively enumerable language it is undecidable to determine whether is finite Proof: We will reduce the.
Chapter 9: Using Classes and Objects. Understanding Class Concepts Types of classes – Classes that are only application programs with a Main() method.
A Crash Course Python. Python? Isn’t that a snake? Yes, but it is also a...
What is a scripting language? What is Python?
Python By Steve Wright. What is Python? Simple, powerful, GP scripting language Simple, powerful, GP scripting language Object oriented Object oriented.
Introduction to Python. Outline Python IS ……. History Installation Data Structures Flow of Control Functions Modules References.
23-August-1999© 1999 CNRI, Guido van Rossum August-1999© 1999 CNRI, Guido van Rossum 2 Python Track Opening Words Guido van Rossum
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.
28 May, 1999Le Copyright © 1999 CNRI, Guido van Rossum 1 Le Python à Paris Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,
Python Guido van Rossum Sung-Jin Hong SPARCS
1 Python CIS*2450 Advanced Programming Concepts Material for this lecture was developed by Dr. D. Calvert.
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 Scripting Languages: Python Some slides are based upon Python Documentation - Extended.
Introduction to Python
Presentation transcript:

10/10/1999© 1999 CNRI, Guido van Rossum 1 Python Workshop Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston, Virginia, USA)

10/10/1999© 1999 CNRI, Guido van Rossum 2 Outline –Briefly, what is Python? –Why use Python? –Python compared to other languages –Basic Python tutorial

10/10/1999© 1999 CNRI, Guido van Rossum 3 BRIEFLY, WHAT IS PYTHON?

10/10/1999© 1999 CNRI, Guido van Rossum 4 Whats in a name? Snake logos and mascot notwithstanding, its named after Monty Pythons Flying Circus Humor-impaired can safely ignore the spam references :-) Nobody expects the Spanish Inquisition

10/10/1999© 1999 CNRI, Guido van Rossum 5 What is Python? O-O HL rapid prototyping language Not just a scripting language Not just another Perl Extensible (add new modules) C/C++/Fortran/whatever Java (through JPython) Embeddable in applications

10/10/1999© 1999 CNRI, Guido van Rossum 6 Touchy-feely properties Free (open source) copyrighted but use not restricted Mature (9 years old) Supportive user community & more books in the pipeline! Elegant design, easy to learn reads like pseudo-code Suitable as first language

10/10/1999© 1999 CNRI, Guido van Rossum 7 High-level properties Extremely portable Unix, Windows, Mac, BeOS, Win/CE, DOS, OS/2, Amiga, VMS, Cray, … Compiled to interpreted byte code compilation is implicit and automatic Automatic memory management reference counting Safe: no core dumps

10/10/1999© 1999 CNRI, Guido van Rossum 8 Interfaces to... COM, DCOM, ODBC Commercial databases Java (JPython) Many GUI libraries platform-independent –Tk, wxWindows, GTK platform-specific –MFC, MacOS, X11/Motif

10/10/1999© 1999 CNRI, Guido van Rossum 9 Language properties Everything is an object Modules, classes, functions Exception handling Dynamic typing, polymorphism Static scoping Operator overloading Indentation for block structure

10/10/1999© 1999 CNRI, Guido van Rossum 10 High-level data types Numbers: int, long, float, complex Strings: immutable Lists and dictionaries: containers Other types for e.g. binary data, regular expressions, introspection Extension modules can define new built-in data types

10/10/1999© 1999 CNRI, Guido van Rossum 11 WHY USE PYTHON?

10/10/1999© 1999 CNRI, Guido van Rossum 12 Productivity! Reduced development time code is 2-10x shorter than C, C++, Java Improved program maintenance code is extremely readable Less training language is very easy to learn

10/10/1999© 1999 CNRI, Guido van Rossum 13 What is it used for? –rapid prototyping –web scripting –throw-away, ad hoc programming –steering scientific applications –extension language –XML processing –database applications –GUI applications

10/10/1999© 1999 CNRI, Guido van Rossum 14 Who is using it? –LLNL, Fermilab (steering) –Alice group at CMU (3D graphics) –ObjectDomain (extend UML tool) –Infoseek (ext. language, scripting) –Industrial Light & Magic (everything) –Yahoo! (CGI in Yahoo!mail) –Digital Creations (Zope) –RedHat (Linux installation tools)

10/10/1999© 1999 CNRI, Guido van Rossum 15 Exciting Applications Zope - supercharged websites Mailman - GNU mailing list manager JPython - Java integration Python on Windows (COM, ASP etc.) XML processing with Python OpenClassroom Star Wars!

10/10/1999© 1999 CNRI, Guido van Rossum 16 Typical Success Stories Prototype in Python first to market acquisition rewrite in C++ or Java e-shop; 411 steering symbiosis of Python and C++ or Java LLNL; ILM; Alice

10/10/1999© 1999 CNRI, Guido van Rossum 17 How Far We Have Come 1995: "Python? What's that?"

10/10/1999© 1999 CNRI, Guido van Rossum 18 How Far We Have Come 1995: "Python? What's that?" 1997: "But nobody else uses Python!"

10/10/1999© 1999 CNRI, Guido van Rossum 19 How Far We Have Come 1995: "Python? What's that?" 1997: "But nobody else uses Python!" 1999: "Where can I hire Python programmers?"

10/10/1999© 1999 CNRI, Guido van Rossum 20 How Far We Have Come 1995: "Python? What's that?" 1997: "But nobody else uses Python!" 1999: "Where can I hire Python programmers?" Next: "Nobody expects the Spanish Inquisition!"

10/10/1999© 1999 CNRI, Guido van Rossum 21 PYTHON COMPARED TO OTHER LANGUAGES

10/10/1999© 1999 CNRI, Guido van Rossum 22 Python vs. Perl –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

10/10/1999© 1999 CNRI, Guido van Rossum 23 Python vs. Tcl –Real datatypes, object-orientation –More differentiated syntax –Much faster (even than Tcl 8.x) –Less need for C extensions –C extensions dont redefine syntax hence fewer extension conflicts –Better Java integration –Python uses Tk as de-facto GUI std

10/10/1999© 1999 CNRI, Guido van Rossum 24 Python vs. Java –Code 5-10 times more concise –Dynamic typing –Much quicker development no compilation phase less typing –Yes, it runs slower but development is so much faster! Use Python with Java: JPython!

10/10/1999© 1999 CNRI, Guido van Rossum 25 JPython –Seamless integration with Java –Separate implementation classic Python called CPython here –Implements the same language –Different set of standard modules –differences in gray areas e.g. some different introspection calls different command line options, etc.

10/10/1999© 1999 CNRI, Guido van Rossum 26 Java Integration –Interactive –Compiles direct to Java bytecode –Import Java classes directly –Subclass Java classes pass instances back to Java –Java beans integration –Can compile into Java class files run as applet in browsers

10/10/1999© 1999 CNRI, Guido van Rossum 27 BASIC PYTHON TUTORIAL

10/10/1999© 1999 CNRI, Guido van Rossum 28 Tutorial Outline 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

10/10/1999© 1999 CNRI, Guido van Rossum 29 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

10/10/1999© 1999 CNRI, Guido van Rossum 30 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)

10/10/1999© 1999 CNRI, Guido van Rossum 31 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"

10/10/1999© 1999 CNRI, Guido van Rossum 32 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"]

10/10/1999© 1999 CNRI, Guido van Rossum 33 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]

10/10/1999© 1999 CNRI, Guido van Rossum 34 Dictionaries Hash tables, "associative arrays" d = {"duck": "eend", "water": "water"} Lookup: d["duck"] -> "eend" d["back"] # raises KeyError exception Delete, insert, overwrite : del d["water"] # {"duck": "eend", "back": "rug"} d["back"] = "rug" # {"duck": "eend", "back": "rug"} d["duck"] = "duik" # {"duck": "duik", "back": "rug"}

10/10/1999© 1999 CNRI, Guido van Rossum 35 More dictionary ops 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"]}

10/10/1999© 1999 CNRI, Guido van Rossum 36 Dictionary details Keys must be immutable: –numbers, strings, tuples 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

10/10/1999© 1999 CNRI, Guido van Rossum 37 Tuples key = (lastname, firstname) point = x, y, z # parens optional x, y, z = point lastname = key[0] singleton = (1,) # trailing comma! empty = () # parentheses! tuples vs. lists; tuples immutable

10/10/1999© 1999 CNRI, Guido van Rossum 38 Variables 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

10/10/1999© 1999 CNRI, Guido van Rossum 39 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]

10/10/1999© 1999 CNRI, Guido van Rossum 40 a 123 b a 123 b 4 a = [1, 2, 3] a.append(4) b = a a 123 Changing a shared list

10/10/1999© 1999 CNRI, Guido van Rossum 41 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)

10/10/1999© 1999 CNRI, Guido van Rossum 42 Control structures if condition: statements [elif condition: statements]... [else: statements] while condition: statements for var in sequence: statements break continue

10/10/1999© 1999 CNRI, Guido van Rossum 43 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!

10/10/1999© 1999 CNRI, Guido van Rossum 44 Functions, procedures def name(arg1, arg2,...): "documentation"# optional statements return# from procedure return expression# from function

10/10/1999© 1999 CNRI, Guido van Rossum 45 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

10/10/1999© 1999 CNRI, Guido van Rossum 46 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

10/10/1999© 1999 CNRI, Guido van Rossum 47 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 its empty? del self.items[-1] return x def empty(self): return len(self.items) == 0# Boolean result

10/10/1999© 1999 CNRI, Guido van Rossum 48 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]

10/10/1999© 1999 CNRI, Guido van Rossum 49 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]

10/10/1999© 1999 CNRI, Guido van Rossum 50 Subclassing (2) 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

10/10/1999© 1999 CNRI, Guido van Rossum 51 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

10/10/1999© 1999 CNRI, Guido van Rossum 52 Instance variable rules On use via instance (self.x), search order: –(1) instance, (2) class, (3) base classes –this also works for method lookup On assigment via instance (self.x =...): –always makes an instance variable Class variables "default" for instance variables But...! –mutable class variable: one copy shared by all –mutable instance variable: each instance its own

10/10/1999© 1999 CNRI, Guido van Rossum 53 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

10/10/1999© 1999 CNRI, Guido van Rossum 54 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()

10/10/1999© 1999 CNRI, Guido van Rossum 55 Catching Exceptions try: print 1/x except ZeroDivisionError, message: print "Cant divide by zero:" print message

10/10/1999© 1999 CNRI, Guido van Rossum 56 Try-Finally: Cleanup f = open(file) try: process_file(f) finally: f.close()# always executed print "OK"# executed on success only

10/10/1999© 1999 CNRI, Guido van Rossum 57 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