Introduction to Python LinuxWorld - New York City - January 2002 Guido van Rossum Director of PythonLabs at Zope Corporation (Now with: Google Inc.)

Slides:



Advertisements
Similar presentations
Introduction to Python LinuxWorld - New York City - January 2002 Guido van Rossum Director of PythonLabs at Zope Corporation
Advertisements

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.
Introduction to Python Programming Languages Fall 2002 Adapted from Tutorial by Mark Hammond Skippi-Net, Melbourne, Australia
CSE (c) S. Tanimoto, 2007 Python Introduction 1 Introduction to Python for Artificial Intelligence Outline: Why Python? Interactive programming,
Introduction to Python. Outline Python IS ……. History Installation Data Structures Flow of Control Functions Modules References.
C. Varela, Adapted with permission from Guido van Rossum1 Python Intro, Concurrency Carlos Varela RPI Adapted with permission from: Guido van Rossum
JaySummet IPRE Python Review 2. 2 Outline Compound Data Types: Strings, Tuples, Lists & Dictionaries Immutable types: Strings Tuples Accessing.
Introduction to Python (for C++ programmers). Background Information History – created in December 1989 by Guido van Rossum Interpreted Dynamically-typed.
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.)
1 Programming in Python Language Overview. 2 Who is using it? Google (various projects) NASA (several projects) NYSE (one of only three languages "on.
Session 2 Wharton Summer Tech Camp 1: Basic Python 2: Start Regex.
1 Python CIS*2450 Advanced Programming Concepts Material for this lecture was developed by Dr. D. Calvert.
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:
Introduction to Python I CSE-391: Artificial Intelligence University of Pennsylvania Matt Huenerfauth January 2005.
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.
An Introduction to Python Blake Brogdon. What is Python?  Python is an interpreted, interactive, object-oriented programming language. (from python.org)
Variables and ConstantstMyn1 Variables and Constants PHP stands for: ”PHP: Hypertext Preprocessor”, and it is a server-side programming language. Special.
Built-in Data Structures in Python An Introduction.
Introduction to Python Modified from Chen Lin Chen Lin Guido van Rossum Guido van Rossum Mark Hammond Mark Hammond John Zelle John Zelle.
Getting Started with Python: Constructs and Pitfalls Sean Deitz Advanced Programming Seminar September 13, 2013.
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.
Python uses boolean variables to evaluate conditions. The boolean values True and False are returned when an expression is compared or evaluated.
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)
Python Overview  Last week Python 3000 was released  Python 3000 == Python 3.0 == Py3k  Designed to break backwards compatibility with the 2.x.
Before starting OOP… Today: Review Useful tips and concepts (based on CS 11 Python track, CALTECH)
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.
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.
By Austin Laudenslager AN INTRODUCTION TO PYTHON.
Python Let’s get started!.
A Tutorial on the Python Programming Language. Overview Running Python and Output Data Types Input and File I/O Control Flow Functions.
Lecture 4 Python Basics Part 3.
CSE 130 : Winter 2009 Programming Languages Lecture 11: What’s in a Name ?
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
Introduction to Python
Python Let’s get started!.
Introduction to Programming with Python
Python Bryce Boe.
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.
Introduction to Python
Introduction to Python
Introduction to Python
Python I Some material adapted from Upenn cmpe391 slides and other sources.
Overview of OOP Terminology
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 Python LinuxWorld - New York City - January 2002
(more) Python.
Programming in Python Language Overview
Lecture 7: Python’s Built-in Types and Basic Statements
Presentation transcript:

Introduction to Python LinuxWorld - New York City - January 2002 Guido van Rossum Director of PythonLabs at Zope Corporation (Now with: Google Inc.) (minorly updated by

Slide 2©2001, 2002 Guido van Rossum Why Python? Have your cake and eat it, too: Productivity and readable code VHLLs will gain on system languages (John Ousterhout) "Life's better without braces" (Bruce Eckel)

Slide 3©2001, 2002 Guido van Rossum Tutorial Outline interactive "shell" basic types: numbers, strings container types: lists, dictionaries, tuples variables control structures functions & procedures classes & instances modules & packages exceptions files & standard library what's new in Python 2.0 and beyond

Slide 4©2001, 2002 Guido van Rossum Try It Out! If you brought a laptop into the classroom, feel free to play along Download Python from Any version will do for this class –By and large they are all mutually compatible –Recommended/current version: –Oldest version still in use: Avoid 1.6/1.6.1 if you can –3.0 is out too! Use IDLE if you can

Slide 5©2001, 2002 Guido van Rossum Interactive “Shell” Great for learning the language Great for experimenting with the library Great for testing your own modules Two variations: IDLE (GUI), python (command line) Type statements or expressions at prompt: >>> print "Hello, world" Hello, world >>> x = 12**2 >>> x/2 72 >>> # this is a comment

Slide 6©2001, 2002 Guido van Rossum Numbers The usual suspects 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# 1./2. -> 0.5, float(1)/2 -> 0.5 Fixed in Python 3.0 Long (arbitrary precision), complex 2**100 -> L 1j**2 -> (-1+0j)

Slide 7©2001, 2002 Guido van Rossum 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"True# comparison "e" in "hello"True# search "escapes: \n etc, \033 etc, \if etc" 'single quotes' “double quotes” r"raw strings" """triple quotes can contain newline like we just saw """

Slide 8©2001, 2002 Guido van Rossum Lists Flexible arrays, similar to Scheme Vectors, but not LISP-like linked lists a = [99, "bottles of beer", ["on", "the", "wall"]] 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"]

Slide 9©2001, 2002 Guido van Rossum 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, 42)# [42,0,1,2,3,4] >>> a.pop(0)# [0,1,2,3,4] 42 >>> a.reverse()# [4,3,2,1,0] >>> a.sort()# [0,1,2,3,4]

Slide 10©2001, 2002 Guido van Rossum Dictionaries Akin to Java Maps 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"} d["back"] = "rug" # {"duck": "eend", "back": "rug"} d["duck"] = "duik" # {"duck": "duik", "back": "rug"}

Slide 11©2001, 2002 Guido van Rossum 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") -> True d.has_key("spam") -> False Values of any type; keys almost any {"name":"Guido", "age":43, ("hello","world"):1, 42:"yes", "flag": ["red","white","blue"]}

Slide 12©2001, 2002 Guido van Rossum 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

Slide 13©2001, 2002 Guido van Rossum Tuples key = (lastname, firstname) point = x, y, z # parentheses optional x, y, z = point # unpack lastname = key[0] singleton = (1,) # trailing comma!!! empty = () # parentheses! tuples vs. lists; tuples immutable

Slide 14©2001, 2002 Guido van Rossum 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": Even functions, classes, modules

Slide 15©2001, 2002 Guido van Rossum 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]

Slide 16©2001, 2002 Guido van Rossum a 123 b a 123 b 4 a = [1, 2, 3] a.append(4) b = a a 123 Changing a Shared List

Slide 17©2001, 2002 Guido van Rossum 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)

Slide 18©2001, 2002 Guido van Rossum Control Structures if condition: statements [elif condition: statements]... else: statements while condition: statements for var in sequence: statements break continue

Slide 19©2001, 2002 Guido van Rossum Grouping Indentation In Python: for i in range(20): if i%3 == 0: print i if i%5 == 0: print "Bingo!" print "---" In 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!

Slide 20©2001, 2002 Guido van Rossum Functions, Procedures def name(arg1, arg2,...): """documentation"""# optional doc string statements return# from procedure return expression# from function

Slide 21©2001, 2002 Guido van Rossum 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

Slide 22©2001, 2002 Guido van Rossum Classes class name: "documentation" statements -or- class name(base1, base2,...):... Most, statements are method definitions: def name(self, arg1, arg2,...):... May also be class variable assignments

Slide 23©2001, 2002 Guido van Rossum Example Class class Stack: "A well-known data structure…" def __init__(self):# constructor self.items = [] # instance field 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

Slide 24©2001, 2002 Guido van Rossum Using Classes To create an instance, simply call the class object: x = Stack()# no 'new' operator! To use methods of the instance, call using dot notation: x.empty()# -> True x.push(1)# [1] x.empty()# -> False x.push("hello")# [1, "hello"] x.pop()# -> "hello"# [1] To inspect instance variables, use dot notation: x.items# -> [1]

Slide 25©2001, 2002 Guido van Rossum 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]

Slide 26©2001, 2002 Guido van Rossum 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

Slide 27©2001, 2002 Guido van Rossum Class / Instance Variables class Connection: verbose = False# class variable def __init__(self, host): self.host = host# instance variable def debug(self, v): self.verbose = True# make instance variable! def connect(self): if self.verbose:# class or instance variable? print "connecting to", self.host

Slide 28©2001, 2002 Guido van Rossum 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 assignment 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

Slide 29©2001, 2002 Guido van Rossum Modules Collection of stuff in foo.py file –functions, classes, variables Importing modules: –import re; print re.match("[a-z]+", s) –from re import match; print match("[a-z]+", s) Import with rename: –import re as regex –from re import match as m

Slide 30©2001, 2002 Guido van Rossum 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() –import P.Q.M as M; print M.foo()# new

Slide 31©2001, 2002 Guido van Rossum Catching Exceptions def foo(x): return 1/x def bar(x): try: print foo(x) except ZeroDivisionError, message: print "Can’t divide by zero:", message bar(0) # Can't divide by zero: integer division or modulo by zero

Slide 32©2001, 2002 Guido van Rossum Try-finally: Cleanup f = open(file) try: process_file(f) finally: f.close()# always executed print "OK"# executed on success only or syntax error?

Slide 33©2001, 2002 Guido van Rossum 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

Slide 34©2001, 2002 Guido van Rossum More on Exceptions User-defined exceptions –subclass Exception or any other standard exception Old Python: exceptions can be strings –WATCH OUT: compared by object identity, not == Last caught exception info: –sys.exc_info() == (exc_type, exc_value, exc_traceback) Last uncaught exception (traceback printed): –sys.last_type, sys.last_value, sys.last_traceback Printing exceptions: traceback module

Slide 35©2001, 2002 Guido van Rossum File Objects f = open(filename[, mode[, buffersize]) –mode can be "r", "w", "a" (like C stdio); default "r" –append "b" for text translation mode –append "+" for read/write open –buffersize: 0=unbuffered; 1=line-buffered; buffered methods: –read([nbytes]), readline(), readlines() –write(string), writelines(list) –seek(pos[, how]), tell() –flush(), close() –fileno()

Slide 36©2001, 2002 Guido van Rossum Standard Library Core: –os, sys, string, getopt, StringIO, struct, pickle,... Regular expressions: –re module; Perl-5 style patterns and matching rules Internet: –socket, rfc822, httplib, htmllib, ftplib, smtplib,... Miscellaneous: –pdb (debugger), profile+pstats –Tkinter (Tcl/Tk interface), audio, *dbm,...

Slide 37©2001, 2002 Guido van Rossum Python 2.0: What's New Augmented assignment: x += y List comprehensions: [s.strip() for s in f.readlines()] Extended print: print >>sys.stderr, "Hello!" Extended import: import foo as bar Unicode strings: u"\u1234" New re implementation (faster, Unicode) Collection of cyclic garbage XML, distutils

Slide 38©2001, 2002 Guido van Rossum Python 2.1: What's New From __future__ import nested_scopes –def make_adder(n): def adder(x): return x+n return adder –add2 = make_adder(2) –add2(10) == 12 Rich comparisons –Overload =, > separately Warnings framework –Prepare for the future

Slide 39©2001, 2002 Guido van Rossum Python 2.2: What's New Iterators and Generators from __future__ import generators def inorder(tree): if tree: for x in inorder(tree.left): yield x yield tree.label for x in inorder(tree.right): yield x Type/class unification –class mydict(dict): … Fix division operator so 1/2 == 0.5; 1//2 == 0 –Requires __future__ statement in Python 2.x –Change will be permanent in Python 3.0

Slide 40©2001, 2002 Guido van Rossum URLs –official site –Community –(alias for –Python Bookstore

Slide 41©2001, 2002 Guido van Rossum Further Reading Exploring Python: Timothy Budd (Prentice Hall ‘09) Learning Python: Lutz, Ascher (O'Reilly '98) Python Essential Reference: Beazley (New Riders '99) Programming Python, 2nd Ed.: Lutz (O'Reilly '01) Core Python Programming: Chun (Prentice-Hall '00) The Quick Python Book: Harms, McDonald (Manning '99) The Standard Python Library: Lundh (O'Reilly '01) Python and Tkinter Programming: Grayson (Manning '00) Python Programming on Win32: Hammond, Robinson (O'Reilly '00) Learn to Program Using Python: Gauld (Addison-W. '00) And many more titles...

Thanks!