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

Introduction to Python

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Introduction to Python

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

Avatar for Gianluca Costa

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