Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to Python

Introduction to Python

The slides of my brown bag session that briefly introduced the Python programming language! ^__^

Gianluca Costa

March 31, 2014
Tweet

More Decks by Gianluca Costa

Other Decks in Programming

Transcript

  1. The execution model x = 10 print(x) Myscript.py The interpreter

    executes lines of code following the flow
  2. Running Python scripts • python <script path> • On Windows:

    shell associations • On Linux: traditional #!
  3. Assignment The key to Python's naming is the assignment operator

    X = 10 1)Expression evaluation 2)Name creation & binding
  4. Basic data types • bool: True, False • str: “Cip”,

    'Cip', r“\d+”, “““Multiline string””” • unicode: u“Ciop”, u'Ciop', ur“\d+”, u“““Multiline””” • int: 2 ** 90 • float: 5.3 • complex: 8 + 7j
  5. Collections • Arrays do not exist in Python (^__^!) •

    list: [], [90, 100, 474, “Yogi”] • tuple: (), (2,), (4.3, 12.1) • dict: {}, {“Alpha”: 90, “Beta”: 2, 15: 20} • set: set(), {1, 2, 3}
  6. Flow control • if / elif / else • while

    • try / except / finally • raise • with • for • yield • pass
  7. For in Python • No C-style for • Python only

    uses iterations on collections: – for i in range(10): print(i)
  8. List comprehension • topStudents = [ student for student in

    students if student.average >= 85 ] • coordinates = [ (x + 5, y - 2) for x in range(1, 11) for y in range(1, 6) ] coordinates = [ ] for x in range(1, 11): for y in range(1, 6): coordinates.append( (x + 5, y – 2) )
  9. Functions • def f(x, y): return x + y •

    A new function object is created and the name “f” gets bound to it.
  10. No overloading in Python • In Python, def creates a

    function object and binds a name to it! • Cannot do overloading!!! X___X!
  11. Parameters VS Argument • Parameter = variable in a function

    signature. It's a placeholder for the actual value • Argument = actual value passed when invoking the function
  12. Function parameters • Standard parameters: f(x, y) • Default values:

    f(x, y, z = 90) • Arbitrary sequence: f(*args) • Keyword params: f(**kwargs) • They can all be introduced, in this order: f(x, y, z = 90, *args, **kwargs)
  13. Function arguments • Given a function f(x, y)... • ...pass

    by position: f(9, 10) • ...pass by name: f(y = 10, x = 9) • ...unpack a list of arguments: – myParamsSequence = [9, 10] – f(*myParamsSequence) • ...pass a map of arguments: – myParamsMap = { “x”: 9, “y”: 10” } – f(**myParamsMap)
  14. Classes • class Panda(object): pass #can be used for classes,

    too • In Python 3, you can just write: class Panda: pass
  15. Creating methods • class Panda(object): def sayHello(self): print(“Hello! ^__^!”) •

    self is the first parameter of instance methods, and it's passed as an implicit argument! It refers to the current instance, just like this in Java/C#.
  16. Fields and constructor • class Panda(object): def __init__(self, name): self._name

    = name self._picnicChests = 0 def addPicnicChest(self, picnicChest): self._picnicChests += 1 def getName(self): return self._name
  17. No access control in Python If a member of an

    object should not be used by other objects, just prepend “_” to its name. For example: • self._privateField = 0 • def _privateMethod(self): pass
  18. Class fields • class Panda(object): _population = 0 def __init__(self):

    Panda._population += 1 • print(Panda._population) print(yogi._population)
  19. Class fields - Caveat • yogi = Panda(“Yogi”) • print(yogi._population)

    • yogi._population = 10 • print(Panda._population) #Output == ?
  20. Multiple inheritance • Python does not define explicit interfaces... •

    ...but it supports multiple inheritance! • class Panda(Bear, VeryCuteAnimal): pass
  21. Explicit method resolution • Given an object instance, how to

    call the method of a specific superclass? – Super1.f(obj, <args>) – Super2.f(obj, <args>)
  22. Overriding methods • Python supports overriding! • But how to

    call the version provided by the superclass?
  23. super() • super(CurrentClassName, self).f(<args>) • In Python 3: super().f(<args>) •

    Not mandatory (you can use explicit method resolution instead)
  24. Static methods • class Panda(object): @staticmethod def myStaticMethod(x, y): return

    x+y • Static methods can be called via the class or via any instance
  25. Class methods • class Bear(object): @classmethod def f(cls, x, y):

    return x + y • They can be called via class or instance
  26. Operator overloading • To overload “+” – def __add__(self, other):

    return ... • There are several operators available
  27. Equality and hashcode • __eq__(self, other) and __neq__(self, other). Both

    should be implemented. • __hash__(self) returns the hash code
  28. Modules • Python files are modules... • ...but not all

    modules are files! ^__^! • PYTHONPATH
  29. Importing a module • import re • from re import

    compile • from re import * (good just while learning)
  30. Module caching and reloading • Importing a module executes it

    only the first time • The module cache is sys.modules • reload() reloads a module • .pyc files to optimize loading in future sessions
  31. Further execution options • Py2exe for Windows • PyInstaller for

    Windows & Unix • Jython • IronPython • Boo