C. Varela, Adapted with permission from Guido van Rossum1 Python Intro, Concurrency Carlos Varela RPI Adapted with permission from: Guido van Rossum www.python.org.

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

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,
JavaScript I. JavaScript is an object oriented programming language used to add interactivity to web pages. Different from Java, even though bears some.
Container Types in Python
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...
I210 review Fall 2011, IUB. Python is High-level programming –High-level versus machine language Interpreted Language –Interpreted versus compiled 2.
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
Python By Steve Wright. What is Python? Simple, powerful, GP scripting language Simple, powerful, GP scripting language Object oriented Object oriented.
Scripting languages Typically a language used for short programs to manage other programs. Interpreted, dynamically typed, permissive semantics Usually.
Introduction to Python. Outline Python IS ……. History Installation Data Structures Flow of Control Functions Modules References.
JaySummet IPRE Python Review 2. 2 Outline Compound Data Types: Strings, Tuples, Lists & Dictionaries Immutable types: Strings Tuples Accessing.
1 Outline 7.1 Introduction 7.2 Implementing a Time Abstract Data Type with a Class 7.3 Special Attributes 7.4Controlling Access to Attributes 7.4.1Get.
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.)
And PyLNP for the RCX By: Eric Cranmer and Nick Blake.
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.
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.
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)
Documentation / References Python Full Documentation – Python Quick Reference –
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.
Recap form last time How to do for loops map, filter, reduce Next up: dictionaries.
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.)
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!.
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 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
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
Programming in Python Language Overview
Lecture 7: Python’s Built-in Types and Basic Statements
Python Review
Presentation transcript:

C. Varela, Adapted with permission from Guido van Rossum1 Python Intro, Concurrency Carlos Varela RPI Adapted with permission from: Guido van Rossum

C. Varela, Adapted with permission from Guido van Rossum2 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

C. Varela, Adapted with permission from Guido van Rossum3 Language properties Almost everything is an object Modules, classes, functions Exception handling Dynamic typing, polymorphism Static scoping Operator overloading Indentation for block structure

C. Varela, Adapted with permission from Guido van Rossum4 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

C. Varela, Adapted with permission from Guido van Rossum5 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

C. Varela, Adapted with permission from Guido van Rossum6 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

C. Varela, Adapted with permission from Guido van Rossum7 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)

C. Varela, Adapted with permission from Guido van Rossum8 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"

C. Varela, Adapted with permission from Guido van Rossum9 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"]

C. Varela, Adapted with permission from Guido van Rossum10 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]

C. Varela, Adapted with permission from Guido van Rossum11 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"}

C. Varela, Adapted with permission from Guido van Rossum12 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"]}

C. Varela, Adapted with permission from Guido van Rossum13 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

C. Varela, Adapted with permission from Guido van Rossum14 Tuples key = (lastname, firstname) point = x, y, z # paren’s optional x, y, z = point lastname = key[0] singleton = (1,) # trailing comma! empty = () # parentheses! tuples vs. lists; tuples immutable

C. Varela, Adapted with permission from Guido van Rossum15 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 first-class: functions, modules, classes

C. Varela, Adapted with permission from Guido van Rossum16 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]

C. Varela, Adapted with permission from Guido van Rossum17 a 123 b a 123 b 4 a = [1, 2, 3] a.append(4) b = a a 123 Changing a shared list

C. Varela, Adapted with permission from Guido van Rossum18 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)

C. Varela, Adapted with permission from Guido van Rossum19 Control structures if condition: statements [elif condition: statements]... [else: statements] while condition: statements for var in sequence: statements break continue

C. Varela, Adapted with permission from Guido van Rossum20 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!

C. Varela, Adapted with permission from Guido van Rossum21 Functions, procedures def name(arg1, arg2,...): "documentation"# optional statements return# from procedure return expression# from function

C. Varela, Adapted with permission from Guido van Rossum22 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

C. Varela, Adapted with permission from Guido van Rossum23 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

C. Varela, Adapted with permission from Guido van Rossum24 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): return self.items.pop()# what happens if it’s empty? def empty(self): return len(self.items) == 0# Boolean result

C. Varela, Adapted with permission from Guido van Rossum25 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]

C. Varela, Adapted with permission from Guido van Rossum26 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[n-1]

C. Varela, Adapted with permission from Guido van Rossum27 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

C. Varela, Adapted with permission from Guido van Rossum28 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

C. Varela, Adapted with permission from Guido van Rossum29 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

C. Varela, Adapted with permission from Guido van Rossum30 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 –import string as s# equivalent

C. Varela, Adapted with permission from Guido van Rossum31 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()

C. Varela, Adapted with permission from Guido van Rossum32 Catching Exceptions try: print 1/x except ZeroDivisionError, message: print "Can’t divide by zero:" print message

C. Varela, Adapted with permission from Guido van Rossum33 Try-Finally: Cleanup f = open(file) try: process_file(f) finally: f.close()# always executed print "OK"# executed on success only

C. Varela, Adapted with permission from Guido van Rossum34 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

C. Varela, Adapted with permission from Guido van Rossum35 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()

C. Varela, Adapted with permission from Guido van Rossum36 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,...

C. Varela, Adapted with permission from Guido van Rossum37 Threads and Objects Import threading module Extend threading.Thread class Override run(self) method Start new objects invoking start() method.

C. Varela, Adapted with permission from Guido van Rossum38 Thread Example import threading class PrintThread(threading.Thread): def __init__(self,frequency,name): self.frequency=frequency self.name=name threading.Thread.__init__(self) def run(self): for i in range(self.frequency): print self.name for t in range(10): PrintThread(t,t).start()

C. Varela, Adapted with permission from Guido van Rossum39 Exercises 1.Can Python objects have private instance variables? 2.What is the semantics of a method definition which does not include “self” as the first argument? 3.Why are some class methods and variables called __xxx__? 4.Can Python (optionally) use brackets for block structure? 5.Is there a “shallow” and “deep” copy method? a=[1,[2]]; b = a; c = “deep_copy”(a); d = “shallow_copy”(a) a[0] = “hi” % does not affect c,d c[1] = [3] % does not affect a,b,d d[1] = [4] % does not affect c d[0] = 2 % does not affect a,b,c