ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Introduction to Python
LinuxWorld - New York City - January 2002
Guido van Rossum
Director of PythonLabs at Zope Corporation
guido@python.org
guido@zope.com
ºÝºÝߣ 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)
ºÝºÝߣ 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
ºÝºÝߣ 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 www.python.org
? Any version will do for this class
¨C By and large they are all mutually compatible
¨C Recommended version: 2.1.1 or 2.2
¨C Oldest version still in widespread use: 1.5.2
¨C Avoid 1.6/1.6.1 if you can
¨C When using 2.0 or 2.1, upgrade to 2.0.1 / 2.1.1
¨C 2.1.2 is coming soon!
? Use IDLE if you can
ºÝºÝߣ 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
ºÝºÝߣ 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
? Will be fixed in the future
? Long (arbitrary precision), complex
? 2L**100 -> 1267650600228229401496703205376L
¨C In Python 2.2 and beyond, 2**100 does the same thing
? 1j**2 -> (-1+0j)
ºÝºÝߣ 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" 1 # comparison
? "e" in "hello" 1 # search
? "escapes: n etc, 033 etc, if etc"
? 'single quotes' """triple quotes""" r"raw strings"
ºÝºÝߣ 8 ?2001, 2002 Guido van Rossum
Lists
? Flexible arrays, 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"]
ºÝºÝߣ 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]
5.5
>>> a.reverse() # [4,3,2,1,0]
>>> a.sort() # [0,1,2,3,4]
ºÝºÝߣ 10 ?2001, 2002 Guido van Rossum
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"}
ºÝºÝߣ 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") -> 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"]}
ºÝºÝߣ 12 ?2001, 2002 Guido van Rossum
Dictionary Details
? Keys must be immutable:
¨C numbers, strings, tuples of immutables
? these cannot be changed after creation
¨C reason is hashing (fast lookup technique)
¨C not lists or other dictionaries
? these types of objects can be changed "in place"
¨C no restrictions on values
? Keys will be listed in arbitrary order
¨C again, because of hashing
ºÝºÝߣ 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
ºÝºÝߣ 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
ºÝºÝߣ 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]
ºÝºÝߣ 16 ?2001, 2002 Guido van Rossum
a
1 2 3
b
a
1 2 3
b
4
a = [1, 2, 3]
a.append(4)
b = a
a 1 2 3
Changing a Shared List
ºÝºÝߣ 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)
ºÝºÝߣ 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
ºÝºÝߣ 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("%dn", i);
if (i%5 == 0) {
printf("Bingo!n"); }
}
printf("---n");
}
0
Bingo!
---
---
---
3
---
---
---
6
---
---
---
9
---
---
---
12
---
---
---
15
Bingo!
---
---
---
18
---
---
ºÝºÝߣ 20 ?2001, 2002 Guido van Rossum
Functions, Procedures
def name(arg1, arg2, ...):
"""documentation""" # optional doc string
statements
return # from procedure
return expression # from function
ºÝºÝߣ 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
ºÝºÝߣ 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
ºÝºÝߣ 23 ?2001, 2002 Guido van Rossum
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
ºÝºÝߣ 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() # -> 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]
ºÝºÝߣ 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]
ºÝºÝߣ 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
ºÝºÝߣ 27 ?2001, 2002 Guido van Rossum
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
ºÝºÝߣ 28 ?2001, 2002 Guido van Rossum
Instance Variable Rules
? On use via instance (self.x), search order:
¨C (1) instance, (2) class, (3) base classes
¨C this also works for method lookup
? On assignment via instance (self.x = ...):
¨C always makes an instance variable
? Class variables "default" for instance
variables
? But...!
¨C mutable class variable: one copy shared by all
¨C mutable instance variable: each instance its own
ºÝºÝߣ 29 ?2001, 2002 Guido van Rossum
Modules
? Collection of stuff in foo.py file
¨C functions, classes, variables
? Importing modules:
¨C import re; print re.match("[a-z]+", s)
¨C from re import match; print match("[a-z]+", s)
? Import with rename:
¨C import re as regex
¨C from re import match as m
¨C Before Python 2.0:
? import re; regex = re; del re
ºÝºÝߣ 30 ?2001, 2002 Guido van Rossum
Packages
? Collection of modules in directory
? Must have __init__.py file
? May contain subpackages
? Import syntax:
¨C from P.Q.M import foo; print foo()
¨C from P.Q import M; print M.foo()
¨C import P.Q.M; print P.Q.M.foo()
¨C import P.Q.M as M; print M.foo() # new
ºÝºÝߣ 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)
ºÝºÝߣ 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
ºÝºÝߣ 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
ºÝºÝߣ 34 ?2001, 2002 Guido van Rossum
More on Exceptions
? User-defined exceptions
¨C subclass Exception or any other standard exception
? Old Python: exceptions can be strings
¨C WATCH OUT: compared by object identity, not ==
? Last caught exception info:
¨C sys.exc_info() == (exc_type, exc_value, exc_traceback)
? Last uncaught exception (traceback printed):
¨C sys.last_type, sys.last_value, sys.last_traceback
? Printing exceptions: traceback module
ºÝºÝߣ 35 ?2001, 2002 Guido van Rossum
File Objects
? f = open(filename[, mode[, buffersize])
¨C mode can be "r", "w", "a" (like C stdio); default "r"
¨C append "b" for text translation mode
¨C append "+" for read/write open
¨C buffersize: 0=unbuffered; 1=line-buffered; buffered
? methods:
¨C read([nbytes]), readline(), readlines()
¨C write(string), writelines(list)
¨C seek(pos[, how]), tell()
¨C flush(), close()
¨C fileno()
ºÝºÝߣ 36 ?2001, 2002 Guido van Rossum
Standard Library
? Core:
¨C os, sys, string, getopt, StringIO, struct, pickle,
...
? Regular expressions:
¨C re module; Perl-5 style patterns and matching
rules
? Internet:
¨C socket, rfc822, httplib, htmllib, ftplib, smtplib, ...
? Miscellaneous:
¨C pdb (debugger), profile+pstats
¨C Tkinter (Tcl/Tk interface), audio, *dbm, ...
ºÝºÝߣ 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
ºÝºÝߣ 38 ?2001, 2002 Guido van Rossum
Python 2.1: What's New
? From __future__ import nested_scopes
¨C def make_adder(n):
def adder(x): return x+n
return adder
¨C add2 = make_adder(2)
¨C add2(10) == 12
? Rich comparisons
¨C Overload <, <=, ==, !=, >=, > separately
? Warnings framework
¨C Prepare for the future
ºÝºÝߣ 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
¨C class mydict(dict): ¡­
? Fix division operator so 1/2 == 0.5; 1//2
== 0
¨C Requires __future__ statement in Python 2.x
¨C Change will be permanent in Python 3.0
ºÝºÝߣ 40 ?2001, 2002 Guido van Rossum
URLs
? http://www.python.org
¨C official site
? http://starship.python.net
¨C Community
? http://www.python.org/psa/bookstore/
¨C (alias for http://www.amk.ca/bookstore/)
¨C Python Bookstore
ºÝºÝߣ 41 ?2001, 2002 Guido van Rossum
Further Reading
? 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...
TIME FOR QUESTIONS

More Related Content

Similar to introduction to python, fundamentals and basics (16)

08-classes-objects.ppt
08-classes-objects.ppt08-classes-objects.ppt
08-classes-objects.ppt
ssuser419267
?
08-classes-objects.ppt
08-classes-objects.ppt08-classes-objects.ppt
08-classes-objects.ppt
UmooraMinhaji
?
Python - Classes and Objects, Inheritance
Python - Classes and Objects, InheritancePython - Classes and Objects, Inheritance
Python - Classes and Objects, Inheritance
erchetanchudasama
?
python.pptprogram on python what is python where it was started by whom started
python.pptprogram on python what is python where it was started by whom startedpython.pptprogram on python what is python where it was started by whom started
python.pptprogram on python what is python where it was started by whom started
rajkumarmandal9391
?
Python tutorialfeb152012
Python tutorialfeb152012Python tutorialfeb152012
Python tutorialfeb152012
Shani729
?
python ppt for engg and education purpose
python ppt  for engg and education purposepython ppt  for engg and education purpose
python ppt for engg and education purpose
riodelite
?
python.ppt
python.pptpython.ppt
python.ppt
MayankRai689616
?
Python advanced 3.the python std lib by example ¨C system related modules
Python advanced 3.the python std lib by example ¨C system related modulesPython advanced 3.the python std lib by example ¨C system related modules
Python advanced 3.the python std lib by example ¨C system related modules
John(Qiang) Zhang
?
Introducci¨®n a Elixir
Introducci¨®n a ElixirIntroducci¨®n a Elixir
Introducci¨®n a Elixir
Svet Ivantchev
?
A Few of My Favorite (Python) Things
A Few of My Favorite (Python) ThingsA Few of My Favorite (Python) Things
A Few of My Favorite (Python) Things
Michael Pirnat
?
sonam Kumari python.ppt
sonam Kumari python.pptsonam Kumari python.ppt
sonam Kumari python.ppt
ssuserd64918
?
Intro to Python
Intro to PythonIntro to Python
Intro to Python
OSU Open Source Lab
?
Python 2. classes- cruciql for students objects1.pptx
Python 2. classes- cruciql for students objects1.pptxPython 2. classes- cruciql for students objects1.pptx
Python 2. classes- cruciql for students objects1.pptx
KiranRaj648995
?
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016
Codemotion
?
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)
Eduard Tom¨¤s
?
Ruby 2: some new things
Ruby 2: some new thingsRuby 2: some new things
Ruby 2: some new things
David Black
?
08-classes-objects.ppt
08-classes-objects.ppt08-classes-objects.ppt
08-classes-objects.ppt
ssuser419267
?
Python - Classes and Objects, Inheritance
Python - Classes and Objects, InheritancePython - Classes and Objects, Inheritance
Python - Classes and Objects, Inheritance
erchetanchudasama
?
python.pptprogram on python what is python where it was started by whom started
python.pptprogram on python what is python where it was started by whom startedpython.pptprogram on python what is python where it was started by whom started
python.pptprogram on python what is python where it was started by whom started
rajkumarmandal9391
?
Python tutorialfeb152012
Python tutorialfeb152012Python tutorialfeb152012
Python tutorialfeb152012
Shani729
?
python ppt for engg and education purpose
python ppt  for engg and education purposepython ppt  for engg and education purpose
python ppt for engg and education purpose
riodelite
?
Python advanced 3.the python std lib by example ¨C system related modules
Python advanced 3.the python std lib by example ¨C system related modulesPython advanced 3.the python std lib by example ¨C system related modules
Python advanced 3.the python std lib by example ¨C system related modules
John(Qiang) Zhang
?
A Few of My Favorite (Python) Things
A Few of My Favorite (Python) ThingsA Few of My Favorite (Python) Things
A Few of My Favorite (Python) Things
Michael Pirnat
?
sonam Kumari python.ppt
sonam Kumari python.pptsonam Kumari python.ppt
sonam Kumari python.ppt
ssuserd64918
?
Python 2. classes- cruciql for students objects1.pptx
Python 2. classes- cruciql for students objects1.pptxPython 2. classes- cruciql for students objects1.pptx
Python 2. classes- cruciql for students objects1.pptx
KiranRaj648995
?
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016
Codemotion
?
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)
Eduard Tom¨¤s
?
Ruby 2: some new things
Ruby 2: some new thingsRuby 2: some new things
Ruby 2: some new things
David Black
?

More from KNaveenKumarECE (7)

ARM introduction registers architectures
ARM introduction registers architecturesARM introduction registers architectures
ARM introduction registers architectures
KNaveenKumarECE
?
basic electronic engineering introduction
basic electronic engineering introductionbasic electronic engineering introduction
basic electronic engineering introduction
KNaveenKumarECE
?
quantization and sampling presentation ppt
quantization and sampling presentation pptquantization and sampling presentation ppt
quantization and sampling presentation ppt
KNaveenKumarECE
?
super vector machines algorithms using deep
super vector machines algorithms using deepsuper vector machines algorithms using deep
super vector machines algorithms using deep
KNaveenKumarECE
?
digital image processing chapter two, fundamentals
digital image processing chapter two, fundamentalsdigital image processing chapter two, fundamentals
digital image processing chapter two, fundamentals
KNaveenKumarECE
?
Augastiny_VANET advantages and disadvantages.pptx
Augastiny_VANET advantages and disadvantages.pptxAugastiny_VANET advantages and disadvantages.pptx
Augastiny_VANET advantages and disadvantages.pptx
KNaveenKumarECE
?
ARM_System_Developers_Guide-Designing_and_Optimizing_System_Software.pdf
ARM_System_Developers_Guide-Designing_and_Optimizing_System_Software.pdfARM_System_Developers_Guide-Designing_and_Optimizing_System_Software.pdf
ARM_System_Developers_Guide-Designing_and_Optimizing_System_Software.pdf
KNaveenKumarECE
?
ARM introduction registers architectures
ARM introduction registers architecturesARM introduction registers architectures
ARM introduction registers architectures
KNaveenKumarECE
?
basic electronic engineering introduction
basic electronic engineering introductionbasic electronic engineering introduction
basic electronic engineering introduction
KNaveenKumarECE
?
quantization and sampling presentation ppt
quantization and sampling presentation pptquantization and sampling presentation ppt
quantization and sampling presentation ppt
KNaveenKumarECE
?
super vector machines algorithms using deep
super vector machines algorithms using deepsuper vector machines algorithms using deep
super vector machines algorithms using deep
KNaveenKumarECE
?
digital image processing chapter two, fundamentals
digital image processing chapter two, fundamentalsdigital image processing chapter two, fundamentals
digital image processing chapter two, fundamentals
KNaveenKumarECE
?
Augastiny_VANET advantages and disadvantages.pptx
Augastiny_VANET advantages and disadvantages.pptxAugastiny_VANET advantages and disadvantages.pptx
Augastiny_VANET advantages and disadvantages.pptx
KNaveenKumarECE
?
ARM_System_Developers_Guide-Designing_and_Optimizing_System_Software.pdf
ARM_System_Developers_Guide-Designing_and_Optimizing_System_Software.pdfARM_System_Developers_Guide-Designing_and_Optimizing_System_Software.pdf
ARM_System_Developers_Guide-Designing_and_Optimizing_System_Software.pdf
KNaveenKumarECE
?

Recently uploaded (20)

GM Meeting 070225 TO 130225 for 2024.pptx
GM Meeting 070225 TO 130225 for 2024.pptxGM Meeting 070225 TO 130225 for 2024.pptx
GM Meeting 070225 TO 130225 for 2024.pptx
crdslalcomumbai
?
US Patented ReGenX Generator, ReGen-X Quatum Motor EV Regenerative Accelerati...
US Patented ReGenX Generator, ReGen-X Quatum Motor EV Regenerative Accelerati...US Patented ReGenX Generator, ReGen-X Quatum Motor EV Regenerative Accelerati...
US Patented ReGenX Generator, ReGen-X Quatum Motor EV Regenerative Accelerati...
Thane Heins NOBEL PRIZE WINNING ENERGY RESEARCHER
?
Mathematics behind machine learning INT255 INT255__Unit 3__PPT-1.pptx
Mathematics behind machine learning INT255 INT255__Unit 3__PPT-1.pptxMathematics behind machine learning INT255 INT255__Unit 3__PPT-1.pptx
Mathematics behind machine learning INT255 INT255__Unit 3__PPT-1.pptx
ppkmurthy2006
?
Syntax Directed Definitions Synthesized Attributes and Inherited Attributes
Syntax Directed Definitions  Synthesized Attributes  and  Inherited AttributesSyntax Directed Definitions  Synthesized Attributes  and  Inherited Attributes
Syntax Directed Definitions Synthesized Attributes and Inherited Attributes
GunjalSanjay
?
How Engineering Model Making Brings Designs to Life.pdf
How Engineering Model Making Brings Designs to Life.pdfHow Engineering Model Making Brings Designs to Life.pdf
How Engineering Model Making Brings Designs to Life.pdf
Maadhu Creatives-Model Making Company
?
15. Smart Cities Big Data, Civic Hackers, and the Quest for a New Utopia.pdf
15. Smart Cities Big Data, Civic Hackers, and the Quest for a New Utopia.pdf15. Smart Cities Big Data, Civic Hackers, and the Quest for a New Utopia.pdf
15. Smart Cities Big Data, Civic Hackers, and the Quest for a New Utopia.pdf
NgocThang9
?
Industrial Valves, Instruments Products Profile
Industrial Valves, Instruments Products ProfileIndustrial Valves, Instruments Products Profile
Industrial Valves, Instruments Products Profile
zebcoeng
?
decarbonization steel industry rev1.pptx
decarbonization steel industry rev1.pptxdecarbonization steel industry rev1.pptx
decarbonization steel industry rev1.pptx
gonzalezolabarriaped
?
Water Industry Process Automation & Control Monthly - March 2025.pdf
Water Industry Process Automation & Control Monthly - March 2025.pdfWater Industry Process Automation & Control Monthly - March 2025.pdf
Water Industry Process Automation & Control Monthly - March 2025.pdf
Water Industry Process Automation & Control
?
Wireless-Charger presentation for seminar .pdf
Wireless-Charger presentation for seminar .pdfWireless-Charger presentation for seminar .pdf
Wireless-Charger presentation for seminar .pdf
AbhinandanMishra30
?
only history of java.pptx real bihind the name java
only history of java.pptx real bihind the name javaonly history of java.pptx real bihind the name java
only history of java.pptx real bihind the name java
mushtaqsaliq9
?
autonomous vehicle project for engineering.pdf
autonomous vehicle project for engineering.pdfautonomous vehicle project for engineering.pdf
autonomous vehicle project for engineering.pdf
JyotiLohar6
?
Integration of Additive Manufacturing (AM) with IoT : A Smart Manufacturing A...
Integration of Additive Manufacturing (AM) with IoT : A Smart Manufacturing A...Integration of Additive Manufacturing (AM) with IoT : A Smart Manufacturing A...
Integration of Additive Manufacturing (AM) with IoT : A Smart Manufacturing A...
ASHISHDESAI85
?
Equipment for Gas Metal Arc Welding Process
Equipment for Gas Metal Arc Welding ProcessEquipment for Gas Metal Arc Welding Process
Equipment for Gas Metal Arc Welding Process
AhmadKamil87
?
Cloud Computing concepts and technologies
Cloud Computing concepts and technologiesCloud Computing concepts and technologies
Cloud Computing concepts and technologies
ssuser4c9444
?
Lecture -3 Cold water supply system.pptx
Lecture -3 Cold water supply system.pptxLecture -3 Cold water supply system.pptx
Lecture -3 Cold water supply system.pptx
rabiaatif2
?
Cyber Security_ Protecting the Digital World.pptx
Cyber Security_ Protecting the Digital World.pptxCyber Security_ Protecting the Digital World.pptx
Cyber Security_ Protecting the Digital World.pptx
Harshith A S
?
Piping-and-pipeline-calculations-manual.pdf
Piping-and-pipeline-calculations-manual.pdfPiping-and-pipeline-calculations-manual.pdf
Piping-and-pipeline-calculations-manual.pdf
OMI0721
?
Sachpazis: Foundation Analysis and Design: Single Piles
Sachpazis: Foundation Analysis and Design: Single PilesSachpazis: Foundation Analysis and Design: Single Piles
Sachpazis: Foundation Analysis and Design: Single Piles
Dr.Costas Sachpazis
?
Frankfurt University of Applied Science urkunde
Frankfurt University of Applied Science urkundeFrankfurt University of Applied Science urkunde
Frankfurt University of Applied Science urkunde
Lisa Emerson
?
GM Meeting 070225 TO 130225 for 2024.pptx
GM Meeting 070225 TO 130225 for 2024.pptxGM Meeting 070225 TO 130225 for 2024.pptx
GM Meeting 070225 TO 130225 for 2024.pptx
crdslalcomumbai
?
Mathematics behind machine learning INT255 INT255__Unit 3__PPT-1.pptx
Mathematics behind machine learning INT255 INT255__Unit 3__PPT-1.pptxMathematics behind machine learning INT255 INT255__Unit 3__PPT-1.pptx
Mathematics behind machine learning INT255 INT255__Unit 3__PPT-1.pptx
ppkmurthy2006
?
Syntax Directed Definitions Synthesized Attributes and Inherited Attributes
Syntax Directed Definitions  Synthesized Attributes  and  Inherited AttributesSyntax Directed Definitions  Synthesized Attributes  and  Inherited Attributes
Syntax Directed Definitions Synthesized Attributes and Inherited Attributes
GunjalSanjay
?
15. Smart Cities Big Data, Civic Hackers, and the Quest for a New Utopia.pdf
15. Smart Cities Big Data, Civic Hackers, and the Quest for a New Utopia.pdf15. Smart Cities Big Data, Civic Hackers, and the Quest for a New Utopia.pdf
15. Smart Cities Big Data, Civic Hackers, and the Quest for a New Utopia.pdf
NgocThang9
?
Industrial Valves, Instruments Products Profile
Industrial Valves, Instruments Products ProfileIndustrial Valves, Instruments Products Profile
Industrial Valves, Instruments Products Profile
zebcoeng
?
decarbonization steel industry rev1.pptx
decarbonization steel industry rev1.pptxdecarbonization steel industry rev1.pptx
decarbonization steel industry rev1.pptx
gonzalezolabarriaped
?
Wireless-Charger presentation for seminar .pdf
Wireless-Charger presentation for seminar .pdfWireless-Charger presentation for seminar .pdf
Wireless-Charger presentation for seminar .pdf
AbhinandanMishra30
?
only history of java.pptx real bihind the name java
only history of java.pptx real bihind the name javaonly history of java.pptx real bihind the name java
only history of java.pptx real bihind the name java
mushtaqsaliq9
?
autonomous vehicle project for engineering.pdf
autonomous vehicle project for engineering.pdfautonomous vehicle project for engineering.pdf
autonomous vehicle project for engineering.pdf
JyotiLohar6
?
Integration of Additive Manufacturing (AM) with IoT : A Smart Manufacturing A...
Integration of Additive Manufacturing (AM) with IoT : A Smart Manufacturing A...Integration of Additive Manufacturing (AM) with IoT : A Smart Manufacturing A...
Integration of Additive Manufacturing (AM) with IoT : A Smart Manufacturing A...
ASHISHDESAI85
?
Equipment for Gas Metal Arc Welding Process
Equipment for Gas Metal Arc Welding ProcessEquipment for Gas Metal Arc Welding Process
Equipment for Gas Metal Arc Welding Process
AhmadKamil87
?
Cloud Computing concepts and technologies
Cloud Computing concepts and technologiesCloud Computing concepts and technologies
Cloud Computing concepts and technologies
ssuser4c9444
?
Lecture -3 Cold water supply system.pptx
Lecture -3 Cold water supply system.pptxLecture -3 Cold water supply system.pptx
Lecture -3 Cold water supply system.pptx
rabiaatif2
?
Cyber Security_ Protecting the Digital World.pptx
Cyber Security_ Protecting the Digital World.pptxCyber Security_ Protecting the Digital World.pptx
Cyber Security_ Protecting the Digital World.pptx
Harshith A S
?
Piping-and-pipeline-calculations-manual.pdf
Piping-and-pipeline-calculations-manual.pdfPiping-and-pipeline-calculations-manual.pdf
Piping-and-pipeline-calculations-manual.pdf
OMI0721
?
Sachpazis: Foundation Analysis and Design: Single Piles
Sachpazis: Foundation Analysis and Design: Single PilesSachpazis: Foundation Analysis and Design: Single Piles
Sachpazis: Foundation Analysis and Design: Single Piles
Dr.Costas Sachpazis
?
Frankfurt University of Applied Science urkunde
Frankfurt University of Applied Science urkundeFrankfurt University of Applied Science urkunde
Frankfurt University of Applied Science urkunde
Lisa Emerson
?

introduction to python, fundamentals and basics

  • 1. Introduction to Python LinuxWorld - New York City - January 2002 Guido van Rossum Director of PythonLabs at Zope Corporation guido@python.org guido@zope.com
  • 2. ºÝºÝߣ 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)
  • 3. ºÝºÝߣ 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
  • 4. ºÝºÝߣ 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 www.python.org ? Any version will do for this class ¨C By and large they are all mutually compatible ¨C Recommended version: 2.1.1 or 2.2 ¨C Oldest version still in widespread use: 1.5.2 ¨C Avoid 1.6/1.6.1 if you can ¨C When using 2.0 or 2.1, upgrade to 2.0.1 / 2.1.1 ¨C 2.1.2 is coming soon! ? Use IDLE if you can
  • 5. ºÝºÝߣ 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
  • 6. ºÝºÝߣ 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 ? Will be fixed in the future ? Long (arbitrary precision), complex ? 2L**100 -> 1267650600228229401496703205376L ¨C In Python 2.2 and beyond, 2**100 does the same thing ? 1j**2 -> (-1+0j)
  • 7. ºÝºÝߣ 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" 1 # comparison ? "e" in "hello" 1 # search ? "escapes: n etc, 033 etc, if etc" ? 'single quotes' """triple quotes""" r"raw strings"
  • 8. ºÝºÝߣ 8 ?2001, 2002 Guido van Rossum Lists ? Flexible arrays, 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"]
  • 9. ºÝºÝߣ 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] 5.5 >>> a.reverse() # [4,3,2,1,0] >>> a.sort() # [0,1,2,3,4]
  • 10. ºÝºÝߣ 10 ?2001, 2002 Guido van Rossum 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"}
  • 11. ºÝºÝߣ 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") -> 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"]}
  • 12. ºÝºÝߣ 12 ?2001, 2002 Guido van Rossum Dictionary Details ? Keys must be immutable: ¨C numbers, strings, tuples of immutables ? these cannot be changed after creation ¨C reason is hashing (fast lookup technique) ¨C not lists or other dictionaries ? these types of objects can be changed "in place" ¨C no restrictions on values ? Keys will be listed in arbitrary order ¨C again, because of hashing
  • 13. ºÝºÝߣ 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
  • 14. ºÝºÝߣ 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
  • 15. ºÝºÝߣ 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]
  • 16. ºÝºÝߣ 16 ?2001, 2002 Guido van Rossum a 1 2 3 b a 1 2 3 b 4 a = [1, 2, 3] a.append(4) b = a a 1 2 3 Changing a Shared List
  • 17. ºÝºÝߣ 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)
  • 18. ºÝºÝߣ 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
  • 19. ºÝºÝߣ 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("%dn", i); if (i%5 == 0) { printf("Bingo!n"); } } printf("---n"); } 0 Bingo! --- --- --- 3 --- --- --- 6 --- --- --- 9 --- --- --- 12 --- --- --- 15 Bingo! --- --- --- 18 --- ---
  • 20. ºÝºÝߣ 20 ?2001, 2002 Guido van Rossum Functions, Procedures def name(arg1, arg2, ...): """documentation""" # optional doc string statements return # from procedure return expression # from function
  • 21. ºÝºÝߣ 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
  • 22. ºÝºÝߣ 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
  • 23. ºÝºÝߣ 23 ?2001, 2002 Guido van Rossum 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
  • 24. ºÝºÝߣ 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() # -> 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]
  • 25. ºÝºÝߣ 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]
  • 26. ºÝºÝߣ 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
  • 27. ºÝºÝߣ 27 ?2001, 2002 Guido van Rossum 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
  • 28. ºÝºÝߣ 28 ?2001, 2002 Guido van Rossum Instance Variable Rules ? On use via instance (self.x), search order: ¨C (1) instance, (2) class, (3) base classes ¨C this also works for method lookup ? On assignment via instance (self.x = ...): ¨C always makes an instance variable ? Class variables "default" for instance variables ? But...! ¨C mutable class variable: one copy shared by all ¨C mutable instance variable: each instance its own
  • 29. ºÝºÝߣ 29 ?2001, 2002 Guido van Rossum Modules ? Collection of stuff in foo.py file ¨C functions, classes, variables ? Importing modules: ¨C import re; print re.match("[a-z]+", s) ¨C from re import match; print match("[a-z]+", s) ? Import with rename: ¨C import re as regex ¨C from re import match as m ¨C Before Python 2.0: ? import re; regex = re; del re
  • 30. ºÝºÝߣ 30 ?2001, 2002 Guido van Rossum Packages ? Collection of modules in directory ? Must have __init__.py file ? May contain subpackages ? Import syntax: ¨C from P.Q.M import foo; print foo() ¨C from P.Q import M; print M.foo() ¨C import P.Q.M; print P.Q.M.foo() ¨C import P.Q.M as M; print M.foo() # new
  • 31. ºÝºÝߣ 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)
  • 32. ºÝºÝߣ 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
  • 33. ºÝºÝߣ 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
  • 34. ºÝºÝߣ 34 ?2001, 2002 Guido van Rossum More on Exceptions ? User-defined exceptions ¨C subclass Exception or any other standard exception ? Old Python: exceptions can be strings ¨C WATCH OUT: compared by object identity, not == ? Last caught exception info: ¨C sys.exc_info() == (exc_type, exc_value, exc_traceback) ? Last uncaught exception (traceback printed): ¨C sys.last_type, sys.last_value, sys.last_traceback ? Printing exceptions: traceback module
  • 35. ºÝºÝߣ 35 ?2001, 2002 Guido van Rossum File Objects ? f = open(filename[, mode[, buffersize]) ¨C mode can be "r", "w", "a" (like C stdio); default "r" ¨C append "b" for text translation mode ¨C append "+" for read/write open ¨C buffersize: 0=unbuffered; 1=line-buffered; buffered ? methods: ¨C read([nbytes]), readline(), readlines() ¨C write(string), writelines(list) ¨C seek(pos[, how]), tell() ¨C flush(), close() ¨C fileno()
  • 36. ºÝºÝߣ 36 ?2001, 2002 Guido van Rossum Standard Library ? Core: ¨C os, sys, string, getopt, StringIO, struct, pickle, ... ? Regular expressions: ¨C re module; Perl-5 style patterns and matching rules ? Internet: ¨C socket, rfc822, httplib, htmllib, ftplib, smtplib, ... ? Miscellaneous: ¨C pdb (debugger), profile+pstats ¨C Tkinter (Tcl/Tk interface), audio, *dbm, ...
  • 37. ºÝºÝߣ 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
  • 38. ºÝºÝߣ 38 ?2001, 2002 Guido van Rossum Python 2.1: What's New ? From __future__ import nested_scopes ¨C def make_adder(n): def adder(x): return x+n return adder ¨C add2 = make_adder(2) ¨C add2(10) == 12 ? Rich comparisons ¨C Overload <, <=, ==, !=, >=, > separately ? Warnings framework ¨C Prepare for the future
  • 39. ºÝºÝߣ 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 ¨C class mydict(dict): ¡­ ? Fix division operator so 1/2 == 0.5; 1//2 == 0 ¨C Requires __future__ statement in Python 2.x ¨C Change will be permanent in Python 3.0
  • 40. ºÝºÝߣ 40 ?2001, 2002 Guido van Rossum URLs ? http://www.python.org ¨C official site ? http://starship.python.net ¨C Community ? http://www.python.org/psa/bookstore/ ¨C (alias for http://www.amk.ca/bookstore/) ¨C Python Bookstore
  • 41. ºÝºÝߣ 41 ?2001, 2002 Guido van Rossum Further Reading ? 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...