SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Introduction to Python
A dynamically typed programming language
allowing multiple paradigms – OO, functional


                       Narendran Thangarajan,
                       @naren_live
                       SSN College of Engg,
                       Chennai
Why Python?


   Productivity and readable code


   Dynamic Type system


   Automatic Memory Mangement


   No braces : "Life's better without braces"
    (Bruce Eckel)
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
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
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
                   In Python 2.2 and beyond, 2**100 does the same thing
             1j**2 -> (-1+0j)
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"
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"]
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]
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"}
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"]}
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
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
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
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]
Changing a Shared List


 a = [1, 2, 3]   a   1   2   3


                 a
 b=a                 1   2   3
                 b

                 a
 a.append(4)         1   2   3   4
                 b
Changing an Integer


 a=1        a      1

            a
b=a                1
            b           new int object created
                        by add operator (1+1)


            a      2
a = a+1                 old reference deleted
                        by assignment (a=...)
            b      1
Control Structures


if condition:       while condition:
  statements
                      statements
[elif condition:
                    for var in sequence:
  statements] ...
else:                 statements
  statements        break

                    continue
Grouping Indentation


In Python:              In C:

                        for (i = 0; i < 20; i++)
for i in range(20):
  if i%3 == 0:          {

     print i                if (i%3 == 0) {
     if i%5 == 0:
                                 printf("%dn", i);
       print "Bingo!"
  print "---"                    if (i%5 == 0) {

                                   printf("Bingo!n"); }

                             }

                             printf("---n");

                        }
Functions, Procedures


def name(arg1, arg2, ...):
  """documentation""" # optional doc string
  statements


return         # from procedure
return expression      # from function
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
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
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
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]
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]
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
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
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
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
        Before Python 2.0:
              import re; regex = re; del re
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
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)
Try-finally: Cleanup


f = open(file)
try:
   process_file(f)
finally:
   f.close()     # always executed
print "OK"       # executed on success only
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
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()
Thank You!

Mais conteúdo relacionado

Mais procurados

Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...
Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...
Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...Matt Harrison
 
How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...
How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...
How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...Matt Harrison
 
Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecLoïc Descotte
 
Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기진성 오
 
Scala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 WorldScala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 WorldBTI360
 
A limited guide to intermediate and advanced Ruby
A limited guide to intermediate and advanced RubyA limited guide to intermediate and advanced Ruby
A limited guide to intermediate and advanced RubyVysakh Sreenivasan
 
Python 표준 라이브러리
Python 표준 라이브러리Python 표준 라이브러리
Python 표준 라이브러리용 최
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objectsHusain Dalal
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?osfameron
 
Haskell in the Real World
Haskell in the Real WorldHaskell in the Real World
Haskell in the Real Worldosfameron
 
여자개발자모임터 6주년 개발 세미나 - Scala Language
여자개발자모임터 6주년 개발 세미나 - Scala Language여자개발자모임터 6주년 개발 세미나 - Scala Language
여자개발자모임터 6주년 개발 세미나 - Scala LanguageAshal aka JOKER
 
PHP Language Trivia
PHP Language TriviaPHP Language Trivia
PHP Language TriviaNikita Popov
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applicationsSkills Matter
 
Basics of Python programming (part 2)
Basics of Python programming (part 2)Basics of Python programming (part 2)
Basics of Python programming (part 2)Pedro Rodrigues
 
Groovy vs Boilerplate and Ceremony Code
Groovy vs Boilerplate and Ceremony CodeGroovy vs Boilerplate and Ceremony Code
Groovy vs Boilerplate and Ceremony Codestasimus
 
Model-Driven Software Development - Static Analysis & Error Checking
Model-Driven Software Development - Static Analysis & Error CheckingModel-Driven Software Development - Static Analysis & Error Checking
Model-Driven Software Development - Static Analysis & Error CheckingEelco Visser
 

Mais procurados (20)

Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...
Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...
Analysis of Fatal Utah Avalanches with Python. From Scraping, Analysis, to In...
 
How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...
How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...
How to Become a Tree Hugger: Random Forests and Predictive Modeling for Devel...
 
SDC - Einführung in Scala
SDC - Einführung in ScalaSDC - Einführung in Scala
SDC - Einführung in Scala
 
Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar Prokopec
 
Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기
 
Scala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 WorldScala vs Java 8 in a Java 8 World
Scala vs Java 8 in a Java 8 World
 
A limited guide to intermediate and advanced Ruby
A limited guide to intermediate and advanced RubyA limited guide to intermediate and advanced Ruby
A limited guide to intermediate and advanced Ruby
 
Python 표준 라이브러리
Python 표준 라이브러리Python 표준 라이브러리
Python 표준 라이브러리
 
Groovy grails types, operators, objects
Groovy grails types, operators, objectsGroovy grails types, operators, objects
Groovy grails types, operators, objects
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?
 
Scala introduction
Scala introductionScala introduction
Scala introduction
 
Haskell in the Real World
Haskell in the Real WorldHaskell in the Real World
Haskell in the Real World
 
여자개발자모임터 6주년 개발 세미나 - Scala Language
여자개발자모임터 6주년 개발 세미나 - Scala Language여자개발자모임터 6주년 개발 세미나 - Scala Language
여자개발자모임터 6주년 개발 세미나 - Scala Language
 
PHP Language Trivia
PHP Language TriviaPHP Language Trivia
PHP Language Trivia
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applications
 
Python Puzzlers
Python PuzzlersPython Puzzlers
Python Puzzlers
 
Basics of Python programming (part 2)
Basics of Python programming (part 2)Basics of Python programming (part 2)
Basics of Python programming (part 2)
 
Groovy vs Boilerplate and Ceremony Code
Groovy vs Boilerplate and Ceremony CodeGroovy vs Boilerplate and Ceremony Code
Groovy vs Boilerplate and Ceremony Code
 
Model-Driven Software Development - Static Analysis & Error Checking
Model-Driven Software Development - Static Analysis & Error CheckingModel-Driven Software Development - Static Analysis & Error Checking
Model-Driven Software Development - Static Analysis & Error Checking
 
Hammurabi
HammurabiHammurabi
Hammurabi
 

Destaque

Android application development
Android application developmentAndroid application development
Android application developmentUC San Diego
 
A primer on network devices
A primer on network devicesA primer on network devices
A primer on network devicesUC San Diego
 
Bioinformatics for Computer Scientists
Bioinformatics for Computer Scientists Bioinformatics for Computer Scientists
Bioinformatics for Computer Scientists Aung Thu Rha Hein
 
Airline reservation system db design
Airline reservation system db designAirline reservation system db design
Airline reservation system db designUC San Diego
 

Destaque (7)

Android application development
Android application developmentAndroid application development
Android application development
 
Routing basics
Routing basicsRouting basics
Routing basics
 
A primer on network devices
A primer on network devicesA primer on network devices
A primer on network devices
 
Network switching
Network switchingNetwork switching
Network switching
 
Bioinformatics for Computer Scientists
Bioinformatics for Computer Scientists Bioinformatics for Computer Scientists
Bioinformatics for Computer Scientists
 
Airline reservation system db design
Airline reservation system db designAirline reservation system db design
Airline reservation system db design
 
Technology Quiz
Technology QuizTechnology Quiz
Technology Quiz
 

Semelhante a Introduction to Python

python within 50 page .ppt
python within 50 page .pptpython within 50 page .ppt
python within 50 page .pptsushil155005
 
GE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python ProgrammingGE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python ProgrammingMuthu Vinayagam
 
Python Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayPython Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayUtkarsh Sengar
 
Pydiomatic
PydiomaticPydiomatic
Pydiomaticrik0
 
(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?Tomasz Wrobel
 
An overview of Python 2.7
An overview of Python 2.7An overview of Python 2.7
An overview of Python 2.7decoupled
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfsagar414433
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfsagar414433
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Introthnetos
 
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) ThingsMichael Pirnat
 
From Java to Scala - advantages and possible risks
From Java to Scala - advantages and possible risksFrom Java to Scala - advantages and possible risks
From Java to Scala - advantages and possible risksSeniorDevOnly
 
Snakes for Camels
Snakes for CamelsSnakes for Camels
Snakes for Camelsmiquelruizm
 
Functional programming in ruby
Functional programming in rubyFunctional programming in ruby
Functional programming in rubyKoen Handekyn
 
Funkcija, objekt, python
Funkcija, objekt, pythonFunkcija, objekt, python
Funkcija, objekt, pythonRobert Lujo
 
Python in 90mins
Python in 90minsPython in 90mins
Python in 90minsLarry Cai
 
Pybelsberg — Constraint-based Programming in Python
Pybelsberg — Constraint-based Programming in PythonPybelsberg — Constraint-based Programming in Python
Pybelsberg — Constraint-based Programming in PythonChristoph Matthies
 

Semelhante a Introduction to Python (20)

python within 50 page .ppt
python within 50 page .pptpython within 50 page .ppt
python within 50 page .ppt
 
GE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python ProgrammingGE8151 Problem Solving and Python Programming
GE8151 Problem Solving and Python Programming
 
Intro to Python
Intro to PythonIntro to Python
Intro to Python
 
Python Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayPython Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard Way
 
Pydiomatic
PydiomaticPydiomatic
Pydiomatic
 
Python idiomatico
Python idiomaticoPython idiomatico
Python idiomatico
 
(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?
 
An overview of Python 2.7
An overview of Python 2.7An overview of Python 2.7
An overview of Python 2.7
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdf
 
Python_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdfPython_Cheat_Sheet_Keywords_1664634397.pdf
Python_Cheat_Sheet_Keywords_1664634397.pdf
 
Meet scala
Meet scalaMeet scala
Meet scala
 
Clojure Intro
Clojure IntroClojure Intro
Clojure Intro
 
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
 
From Java to Scala - advantages and possible risks
From Java to Scala - advantages and possible risksFrom Java to Scala - advantages and possible risks
From Java to Scala - advantages and possible risks
 
P3 2018 python_regexes
P3 2018 python_regexesP3 2018 python_regexes
P3 2018 python_regexes
 
Snakes for Camels
Snakes for CamelsSnakes for Camels
Snakes for Camels
 
Functional programming in ruby
Functional programming in rubyFunctional programming in ruby
Functional programming in ruby
 
Funkcija, objekt, python
Funkcija, objekt, pythonFunkcija, objekt, python
Funkcija, objekt, python
 
Python in 90mins
Python in 90minsPython in 90mins
Python in 90mins
 
Pybelsberg — Constraint-based Programming in Python
Pybelsberg — Constraint-based Programming in PythonPybelsberg — Constraint-based Programming in Python
Pybelsberg — Constraint-based Programming in Python
 

Mais de UC San Diego

Datacenter traffic demand characterization
Datacenter traffic demand characterizationDatacenter traffic demand characterization
Datacenter traffic demand characterizationUC San Diego
 
Smart Homes, Buildings and Internet-of-things
Smart Homes, Buildings and Internet-of-thingsSmart Homes, Buildings and Internet-of-things
Smart Homes, Buildings and Internet-of-thingsUC San Diego
 
Social Networks analysis to characterize HIV at-risk populations - Progress a...
Social Networks analysis to characterize HIV at-risk populations - Progress a...Social Networks analysis to characterize HIV at-risk populations - Progress a...
Social Networks analysis to characterize HIV at-risk populations - Progress a...UC San Diego
 
eyeTalk - A system for helping people affected by motor neuron problems
eyeTalk - A system for helping people affected by motor neuron problemseyeTalk - A system for helping people affected by motor neuron problems
eyeTalk - A system for helping people affected by motor neuron problemsUC San Diego
 
Basic terminologies for a developer
Basic terminologies for a developerBasic terminologies for a developer
Basic terminologies for a developerUC San Diego
 
Fields in computer science
Fields in computer scienceFields in computer science
Fields in computer scienceUC San Diego
 
Understanding computer networks
Understanding computer networksUnderstanding computer networks
Understanding computer networksUC San Diego
 
Network Programming with Umit project
Network Programming with Umit projectNetwork Programming with Umit project
Network Programming with Umit projectUC San Diego
 
Workshop on Network Security
Workshop on Network SecurityWorkshop on Network Security
Workshop on Network SecurityUC San Diego
 
Socket programming in Java (PPTX)
Socket programming in Java (PPTX)Socket programming in Java (PPTX)
Socket programming in Java (PPTX)UC San Diego
 
Socket programming using java
Socket programming using javaSocket programming using java
Socket programming using javaUC San Diego
 
Pervasive Web Application Architecture
Pervasive Web Application ArchitecturePervasive Web Application Architecture
Pervasive Web Application ArchitectureUC San Diego
 

Mais de UC San Diego (15)

Datacenter traffic demand characterization
Datacenter traffic demand characterizationDatacenter traffic demand characterization
Datacenter traffic demand characterization
 
Smart Homes, Buildings and Internet-of-things
Smart Homes, Buildings and Internet-of-thingsSmart Homes, Buildings and Internet-of-things
Smart Homes, Buildings and Internet-of-things
 
Social Networks analysis to characterize HIV at-risk populations - Progress a...
Social Networks analysis to characterize HIV at-risk populations - Progress a...Social Networks analysis to characterize HIV at-risk populations - Progress a...
Social Networks analysis to characterize HIV at-risk populations - Progress a...
 
eyeTalk - A system for helping people affected by motor neuron problems
eyeTalk - A system for helping people affected by motor neuron problemseyeTalk - A system for helping people affected by motor neuron problems
eyeTalk - A system for helping people affected by motor neuron problems
 
Pirc net poster
Pirc net posterPirc net poster
Pirc net poster
 
Ajaxism
AjaxismAjaxism
Ajaxism
 
Basic terminologies for a developer
Basic terminologies for a developerBasic terminologies for a developer
Basic terminologies for a developer
 
Fields in computer science
Fields in computer scienceFields in computer science
Fields in computer science
 
Understanding computer networks
Understanding computer networksUnderstanding computer networks
Understanding computer networks
 
FOSS Introduction
FOSS IntroductionFOSS Introduction
FOSS Introduction
 
Network Programming with Umit project
Network Programming with Umit projectNetwork Programming with Umit project
Network Programming with Umit project
 
Workshop on Network Security
Workshop on Network SecurityWorkshop on Network Security
Workshop on Network Security
 
Socket programming in Java (PPTX)
Socket programming in Java (PPTX)Socket programming in Java (PPTX)
Socket programming in Java (PPTX)
 
Socket programming using java
Socket programming using javaSocket programming using java
Socket programming using java
 
Pervasive Web Application Architecture
Pervasive Web Application ArchitecturePervasive Web Application Architecture
Pervasive Web Application Architecture
 

Último

1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxVishalSingh1417
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfPoh-Sun Goh
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhikauryashika82
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin ClassesCeline George
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...Nguyen Thanh Tu Collection
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibitjbellavia9
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docxPoojaSen20
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.MaryamAhmad92
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxVishalSingh1417
 

Último (20)

1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 

Introduction to Python

  • 1. Introduction to Python A dynamically typed programming language allowing multiple paradigms – OO, functional Narendran Thangarajan, @naren_live SSN College of Engg, Chennai
  • 2. Why Python?  Productivity and readable code  Dynamic Type system  Automatic Memory Mangement  No braces : "Life's better without braces" (Bruce Eckel)
  • 3. 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
  • 4. 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
  • 5. 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  In Python 2.2 and beyond, 2**100 does the same thing  1j**2 -> (-1+0j)
  • 6. 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"
  • 7. 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"]
  • 8. 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]
  • 9. 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. 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"]}
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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]
  • 15. Changing a Shared List a = [1, 2, 3] a 1 2 3 a b=a 1 2 3 b a a.append(4) 1 2 3 4 b
  • 16. Changing an Integer a=1 a 1 a b=a 1 b new int object created by add operator (1+1) a 2 a = a+1 old reference deleted by assignment (a=...) b 1
  • 17. Control Structures if condition: while condition: statements statements [elif condition: for var in sequence: statements] ... else: statements statements break continue
  • 18. Grouping Indentation In Python: In C: for (i = 0; i < 20; i++) for i in range(20): if i%3 == 0: { print i if (i%3 == 0) { if i%5 == 0: printf("%dn", i); print "Bingo!" print "---" if (i%5 == 0) { printf("Bingo!n"); } } printf("---n"); }
  • 19. Functions, Procedures def name(arg1, arg2, ...): """documentation""" # optional doc string statements return # from procedure return expression # from function
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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]
  • 24. 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]
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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  Before Python 2.0:  import re; regex = re; del re
  • 29. 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
  • 30. 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)
  • 31. Try-finally: Cleanup f = open(file) try: process_file(f) finally: f.close() # always executed print "OK" # executed on success only
  • 32. 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
  • 33. 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()