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

Python @Wheel Lab

KuoE0
June 27, 2013

Python @Wheel Lab

20130627 @Wheel Lab
Talk About Python

KuoE0

June 27, 2013
Tweet

More Decks by KuoE0

Other Decks in Programming

Transcript

  1. @ WheelLab 2013.06.27
    Python
    ֲࢸݢʢKuoE0ʣ
    [email protected]
    KuoE0.ch

    View full-size slide

  2. Latest update: Jun 30, 2013
    Attribution-ShareAlike 3.0 Unported
    (CC BY-SA 3.0)
    http://creativecommons.org/licenses/by-sa/3.0/

    View full-size slide

  3. What is Python?

    View full-size slide

  4. What is Python?
    a programming language

    View full-size slide

  5. What is Python?
    easy to Read
    easy to Learn
    easy to Write
    a programming language

    View full-size slide

  6. Position
    May 2013
    Position
    May 2012
    Delta in
    Position
    Programming Language
    1 1 = C
    2 2 = Java
    3 4 ↑ Objective-C
    4 3 ↓ C++
    5 5 = C#
    6 6 = PHP
    7 7 = Visual Basic
    8 8 = Python
    9 9 = Perl
    10 11 ↑ Ruby
    http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
    Top Language in TIOBE

    View full-size slide

  7. Javascript
    Ruby
    Java
    Python
    Shell
    PHP
    C
    C++
    Perl
    Objective-C
    0% 5% 10% 15% 20% 25%
    3%
    4%
    5%
    6%
    7%
    8%
    8%
    8%
    12%
    21%
    Top Languages in Github
    https://github.com/languages

    View full-size slide

  8. Javascript
    Ruby
    Java
    Python
    Shell
    PHP
    C
    C++
    Perl
    Objective-C
    0% 5% 10% 15% 20% 25%
    3%
    4%
    5%
    6%
    7%
    8%
    8%
    8%
    12%
    21%
    Top Languages in Github
    https://github.com/languages

    View full-size slide

  9. What does the logo mean?

    View full-size slide

  10. ք Kingdom ಈ෺ք Animalia
    ໳ Phylum ੸ࡧಈ෺໳ Chordata
    ߝ Class ᗡᦚՊ Reptilia
    ໨ Order ༗ྡྷ໨ Squamata
    Պ Family ᦢՊ Pythonidae
    ሱ Genus ᦢሱ Python

    View full-size slide

  11. http://wallpapers.free-review.net/15__Tree_python.htm

    View full-size slide

  12. http://wallpapers.free-review.net/15__Tree_python.htm

    View full-size slide

  13. More About Python...

    View full-size slide

  14. More About Python...
    Interpreted Language
    Do not need to compile!

    View full-size slide

  15. Compiled Language
    compiler execute

    View full-size slide

  16. Interpreted Language
    execute
    But, interpret in execution time.
    And, it would be slow...

    View full-size slide

  17. More About Python...
    Object-Oriented Language
    Everything in Python is object!

    View full-size slide

  18. number
    function
    string
    list
    Object

    View full-size slide

  19. number
    function
    string
    list
    Object

    View full-size slide

  20. overloading
    polymorphism
    inheritance
    multiple inheritance

    View full-size slide

  21. More About Python...
    Imperative Programming
    Generic Programming
    Functional Programming

    View full-size slide

  22. There should be one—
    and preferably only one
    —obvious way to do it.
    Philosophy

    View full-size slide

  23. There should be one—
    and preferably only one
    —obvious way to do it.
    Philosophy
    There should be one—
    and preferably only one
    —obvious way to do it.

    View full-size slide

  24. $
    Zen of Python

    View full-size slide

  25. $
    $ python -ic “”
    Zen of Python

    View full-size slide

  26. $
    $ python -ic “”
    $ python -ic “”
    >>>
    Zen of Python

    View full-size slide

  27. $
    $ python -ic “”
    $ python -ic “”
    >>>
    $ python -ic “”
    >>> import this
    Zen of Python

    View full-size slide

  28. $
    $ python -ic “”
    $ python -ic “”
    >>>
    $ python -ic “”
    >>> import this
    $ python -ic “”
    >>> import this
    The Zen of Python, by Tim Peters
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    >>> import this
    The Zen of Python, by Tim Peters
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    The Zen of Python, by Tim Peters
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    Readability counts.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Special cases aren't special enough to
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    now.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    now.
    If the implementation is hard to explain,
    Unless explicitly silenced.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    now.
    If the implementation is hard to explain,
    it's a bad idea.
    In the face of ambiguity, refuse the
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    now.
    If the implementation is hard to explain,
    it's a bad idea.
    If the implementation is easy to explain,
    temptation to guess.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    now.
    If the implementation is hard to explain,
    it's a bad idea.
    If the implementation is easy to explain,
    it may be a good idea.
    There should be one-- and preferably only
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    now.
    If the implementation is hard to explain,
    it's a bad idea.
    If the implementation is easy to explain,
    it may be a good idea.
    Namespaces are one honking great idea --
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    now.
    If the implementation is hard to explain,
    it's a bad idea.
    If the implementation is easy to explain,
    it may be a good idea.
    Namespaces are one honking great idea --
    let's do more of those!
    one --obvious way to do it.
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    now.
    If the implementation is hard to explain,
    it's a bad idea.
    If the implementation is easy to explain,
    it may be a good idea.
    Namespaces are one honking great idea --
    let's do more of those!
    Although that way may not be obvious at
    first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right*
    now.
    If the implementation is hard to explain,
    it's a bad idea.
    If the implementation is easy to explain,
    it may be a good idea.
    Namespaces are one honking great idea --
    let's do more of those!
    >>>
    Zen of Python

    View full-size slide

  29. Current Situation

    View full-size slide

  30. Current Situation
    Python 2.x Python 3.x

    View full-size slide

  31. Current Situation
    Python 2.x Python 3.x
    Coexist!

    View full-size slide

  32. Current Situation
    Python 2.x Python 3.x
    Coexist!

    View full-size slide

  33. Current Situation
    Python 2.x Python 3.x
    Coexist!
    backwards-incompatible

    View full-size slide

  34. Python 2.x Python 3.x
    2.7.x is the latest version under development
    more 3-party library 2to3.py
    built-in on many OS more supported unicode
    the past in someday the future in someday

    View full-size slide

  35. http://www.ibm.com/developerworks/cn/linux/l-python3-1/
    Python 3 త৽ಛੑ

    View full-size slide

  36. Python 2.x
    Today, Let’s Talk About

    View full-size slide

  37. Environment
    For Unix-like OS User,
    Python 2.x is Built-in!

    View full-size slide

  38. Environment
    For Windows User,
    Download From
    http://www.python.org/download/
    if you want to launch Python in command line,
    add the path of Python binary file into PATH variable.

    View full-size slide

  39. $
    Check Version of Python

    View full-size slide

  40. $
    Check Version of Python
    $ python --version

    View full-size slide

  41. $
    Check Version of Python
    $ python --version
    $ python --version
    Python 2.7.5

    View full-size slide

  42. $
    Check Version of Python
    $ python --version
    $ python --version
    Python 2.7.5
    2.7.5 is released on May 15, 2013

    View full-size slide

  43. $
    Check Version of Python

    View full-size slide

  44. $
    $ python
    Check Version of Python

    View full-size slide

  45. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    Check Version of Python

    View full-size slide

  46. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    Check Version of Python

    View full-size slide

  47. $
    Interactive Shell

    View full-size slide

  48. $
    $ python
    Interactive Shell

    View full-size slide

  49. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    Interactive Shell

    View full-size slide

  50. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    Interactive Shell
    prompt

    View full-size slide

  51. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    Interactive Shell
    prompt
    means that your turn!

    View full-size slide

  52. $
    Interactive Shell

    View full-size slide

  53. $
    $ python
    Interactive Shell

    View full-size slide

  54. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    Interactive Shell

    View full-size slide

  55. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    Interactive Shell

    View full-size slide

  56. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    Interactive Shell

    View full-size slide

  57. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    Interactive Shell

    View full-size slide

  58. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    Interactive Shell

    View full-size slide

  59. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Interactive Shell

    View full-size slide

  60. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Interactive Shell

    View full-size slide

  61. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    Interactive Shell

    View full-size slide

  62. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    Interactive Shell

    View full-size slide

  63. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    Interactive Shell

    View full-size slide

  64. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>>
    Interactive Shell

    View full-size slide

  65. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>>
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    Interactive Shell

    View full-size slide

  66. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>>
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ...
    Interactive Shell

    View full-size slide

  67. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>>
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ...
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    Interactive Shell

    View full-size slide

  68. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>>
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ...
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    Interactive Shell

    View full-size slide

  69. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>>
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ...
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    0
    1
    2
    3
    4
    >>>
    Interactive Shell

    View full-size slide

  70. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>>
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ...
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    0
    1
    2
    3
    4
    >>>
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    0
    1
    2
    3
    4
    >>> exit()
    Interactive Shell

    View full-size slide

  71. $
    $ python
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>>
    $ python
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>>
    Python 2.7.5 (default, May 20 2013,
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>>
    23:41:46)
    [GCC 4.2.1 Compatible Apple LLVM 4.2
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>>
    (clang-425.0.28)] on darwin
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ...
    Type "help", "copyright", "credits" or
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    "license" for more information.
    >>> 1 + 2 + 3
    6
    >>> “Hello World”
    ‘Hello World’
    >>> x = 100
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    0
    1
    2
    3
    4
    >>>
    >>> y = 200
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    0
    1
    2
    3
    4
    >>> exit()
    >>> x + y
    300
    >>> for i in range(5):
    ... print i
    ...
    0
    1
    2
    3
    4
    >>> exit()
    $
    Interactive Shell

    View full-size slide

  72. Hello World!

    View full-size slide

  73. Hello World!
    if __name__ == “__main__”:
    print “Hello World!”
    helloworld.py

    View full-size slide

  74. $
    Hello World!

    View full-size slide

  75. $
    Hello World!
    $ python helloworld.py

    View full-size slide

  76. $
    Hello World!
    $ python helloworld.py
    $ python helloworld.py
    Hello World!
    $

    View full-size slide

  77. A Python Code

    View full-size slide

  78. A Python Code
    def mul(x, y):
    ret = x * y
    return ret
    for i in range(10)[2:]:
    for j in range(10)[1:]:
    print "{0} x {1} = {2}".format(i, j,
    mul(i, j))
    9x9table.py

    View full-size slide

  79. script language
    def mul(x, y):
    ret = x * y
    return ret
    for i in range(10)[2:]:
    for j in range(10)[1:]:
    print "{0} x {1} = {2}".format(i, j,
    mul(i, j))
    no specified entry point

    View full-size slide

  80. $
    script language

    View full-size slide

  81. $
    script language
    $ python 9x9table.py

    View full-size slide

  82. $
    script language
    $ python 9x9table.py
    $ python 9x9table.py
    2 x 1 = 2
    2 x 2 = 4
    2 x 3 = 6
    2 x 4 = 8
    2 x 5 = 10
    2 x 6 = 12
    2 x 7 = 14
    2 x 8 = 16
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    2 x 1 = 2
    2 x 2 = 4
    2 x 3 = 6
    2 x 4 = 8
    2 x 5 = 10
    2 x 6 = 12
    2 x 7 = 14
    2 x 8 = 16
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    2 x 2 = 4
    2 x 3 = 6
    2 x 4 = 8
    2 x 5 = 10
    2 x 6 = 12
    2 x 7 = 14
    2 x 8 = 16
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    2 x 3 = 6
    2 x 4 = 8
    2 x 5 = 10
    2 x 6 = 12
    2 x 7 = 14
    2 x 8 = 16
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    2 x 4 = 8
    2 x 5 = 10
    2 x 6 = 12
    2 x 7 = 14
    2 x 8 = 16
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    2 x 5 = 10
    2 x 6 = 12
    2 x 7 = 14
    2 x 8 = 16
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    2 x 6 = 12
    2 x 7 = 14
    2 x 8 = 16
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    2 x 7 = 14
    2 x 8 = 16
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    2 x 8 = 16
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    2 x 9 = 18
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    3 x 1 = 3
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    3 x 2 = 6
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    3 x 3 = 9
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    3 x 4 = 12
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    3 x 5 = 15
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    3 x 6 = 18
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    3 x 7 = 21
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    3 x 8 = 24
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    3 x 9 = 27
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    4 x 1 = 4
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    4 x 2 = 8
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    4 x 3 = 12
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    4 x 4 = 16
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    4 x 5 = 20
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    4 x 6 = 24
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    4 x 7 = 28
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    4 x 8 = 32
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    4 x 9 = 36
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    5 x 8 = 40
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    5 x 9 = 45
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    6 x 1 = 6
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    6 x 2 = 12
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    6 x 3 = 18
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    6 x 4 = 24
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    6 x 5 = 30
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    6 x 6 = 36
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    6 x 7 = 42
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    6 x 8 = 48
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    6 x 9 = 54
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    7 x 1 = 7
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    7 x 2 = 14
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    7 x 3 = 21
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    7 x 4 = 28
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    7 x 5 = 35
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    7 x 6 = 42
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    7 x 7 = 49
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    7 x 8 = 56
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    9 x 2 = 18
    7 x 9 = 63
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    9 x 2 = 18
    9 x 3 = 27
    8 x 1 = 8
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    9 x 2 = 18
    9 x 3 = 27
    9 x 4 = 36
    8 x 2 = 16
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    9 x 2 = 18
    9 x 3 = 27
    9 x 4 = 36
    9 x 5 = 45
    8 x 3 = 24
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    9 x 2 = 18
    9 x 3 = 27
    9 x 4 = 36
    9 x 5 = 45
    9 x 6 = 54
    8 x 4 = 32
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    9 x 2 = 18
    9 x 3 = 27
    9 x 4 = 36
    9 x 5 = 45
    9 x 6 = 54
    9 x 7 = 63
    8 x 5 = 40
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    9 x 2 = 18
    9 x 3 = 27
    9 x 4 = 36
    9 x 5 = 45
    9 x 6 = 54
    9 x 7 = 63
    9 x 8 = 72
    8 x 6 = 48
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    9 x 2 = 18
    9 x 3 = 27
    9 x 4 = 36
    9 x 5 = 45
    9 x 6 = 54
    9 x 7 = 63
    9 x 8 = 72
    9 x 9 = 81
    8 x 7 = 56
    8 x 8 = 64
    8 x 9 = 72
    9 x 1 = 9
    9 x 2 = 18
    9 x 3 = 27
    9 x 4 = 36
    9 x 5 = 45
    9 x 6 = 54
    9 x 7 = 63
    9 x 8 = 72
    9 x 9 = 81
    $

    View full-size slide

  83. If you need a main function
    as entry point,
    if __name__ == “__main__”:
    print “Hello World!”

    View full-size slide

  84. If you need a main function
    as entry point,
    if __name__ == “__main__”:
    print “Hello World!”

    View full-size slide

  85. If you need a main function
    as entry point,
    if __name__ == “__main__”:
    print “Hello World!”
    and write all statements after it.

    View full-size slide

  86. def mul(x, y):
    ret = x * y
    return ret
    for i in range(10)[2:]:
    for j in range(10)[1:]:
    print "{0} x {1} = {2}".format(i, j,
    mul(i, j))
    variable
    can be used without declaration

    View full-size slide

  87. def mul(x, y):
    ret = x * y
    return ret
    for i in range(10)[2:]:
    for j in range(10)[1:]:
    print "{0} x {1} = {2}".format(i, j,
    mul(i, j))
    variable
    def mul(x, y):
    ret = x * y
    return ret
    for i in range(10)[2:]:
    for j in range(10)[1:]:
    print "{0} x {1} = {2}".format(i, j,
    mul(i, j))
    can be used without declaration

    View full-size slide

  88. def mul(x, y):
    ret = x * y
    return ret
    for i in range(10)[2:]:
    for j in range(10)[1:]:
    print "{0} x {1} = {2}".format(i, j,
    mul(i, j))
    scope
    use whitespace to identify scope

    View full-size slide

  89. def mul(x, y):
    ret = x * y
    return ret
    for i in range(10)[2:]:
    for j in range(10)[1:]:
    print "{0} x {1} = {2}".format(i, j,
    mul(i, j))
    scope
    def mul(x, y):
    ret = x * y
    return ret
    for i in range(10)[2:]:
    for j in range(10)[1:]:
    print "{0} x {1} = {2}".format(i, j,
    mul(i, j))
    use whitespace to identify scope

    View full-size slide

  90. You can use
    to identify scopes.

    View full-size slide

  91. You can use
    one space
    two spaces
    three spaces
    four spaces
    lots of spaces
    to identify scopes.

    View full-size slide

  92. You can use
    one space
    two spaces
    three spaces
    four spaces
    lots of spaces
    one tab
    two tabs
    three tabs
    four tabs
    lots of tabs
    to identify scopes.

    View full-size slide

  93. But, you should unify the style!

    View full-size slide

  94. Built-in Data Type

    View full-size slide

  95. Numbers
    int
    (integer)
    long
    (long integer)
    float
    (real number)
    complex
    (complex number)
    10 10L 100.0 3 + 2j
    -789 -789L -21.9 3 - 2j
    -0x111 0xFFFFFFFFF 3.20E+10 45j
    0x69 -0x12321L -2.00E-08 3e+26j

    View full-size slide

  96. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>

    View full-size slide

  97. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)

    View full-size slide

  98. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)
    >>> int(10)
    10
    >>>

    View full-size slide

  99. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)
    >>> int(10)
    10
    >>>
    >>> int(10)
    10
    >>> int(“100”)

    View full-size slide

  100. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)
    >>> int(10)
    10
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>>

    View full-size slide

  101. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)
    >>> int(10)
    10
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)

    View full-size slide

  102. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)
    >>> int(10)
    10
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>>

    View full-size slide

  103. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)
    >>> int(10)
    10
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)

    View full-size slide

  104. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)
    >>> int(10)
    10
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)
    (10+3j)
    >>>

    View full-size slide

  105. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)
    >>> int(10)
    10
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)
    (10+3j)
    >>>
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)
    (10+3j)
    >>> complex(“20+5j”)

    View full-size slide

  106. Initialization / Conversion
    data type initial
    int int(x)
    long long(x)
    float float(x)
    complex
    complex(x)
    complex(x, y)
    >>>
    >>> int(10)
    >>> int(10)
    10
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>>
    >>> int(10)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)
    (10+3j)
    >>>
    10
    >>> int(“100”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)
    (10+3j)
    >>> complex(“20+5j”)
    100
    >>> complex(10)
    (10+0j)
    >>> complex(10, 3)
    (10+3j)
    >>> complex(“20+5j”)
    (20+5j)
    >>>

    View full-size slide

  107. Arithmetic Operators
    + addition
    - subtraction
    * multiplication
    / division
    % modular
    ** exponential
    // floor division
    >>>

    View full-size slide

  108. Arithmetic Operators
    + addition
    - subtraction
    * multiplication
    / division
    % modular
    ** exponential
    // floor division
    >>>
    >>> 2**10

    View full-size slide

  109. Arithmetic Operators
    + addition
    - subtraction
    * multiplication
    / division
    % modular
    ** exponential
    // floor division
    >>>
    >>> 2**10
    >>> 2**10
    1024
    >>>

    View full-size slide

  110. Arithmetic Operators
    + addition
    - subtraction
    * multiplication
    / division
    % modular
    ** exponential
    // floor division
    >>>
    >>> 2**10
    >>> 2**10
    1024
    >>>
    >>> 2**10
    1024
    >>> 5.8 // 2

    View full-size slide

  111. Arithmetic Operators
    + addition
    - subtraction
    * multiplication
    / division
    % modular
    ** exponential
    // floor division
    >>>
    >>> 2**10
    >>> 2**10
    1024
    >>>
    >>> 2**10
    1024
    >>> 5.8 // 2
    >>> 2**10
    1024
    >>> 5.8 // 2
    2.0
    >>>

    View full-size slide

  112. Bitwise Operators
    & and
    | or
    ^ exclusion or
    >> shift right
    << shift left
    ~ not
    >>>

    View full-size slide

  113. Bitwise Operators
    & and
    | or
    ^ exclusion or
    >> shift right
    << shift left
    ~ not
    >>>
    >>> 3 & 1

    View full-size slide

  114. Bitwise Operators
    & and
    | or
    ^ exclusion or
    >> shift right
    << shift left
    ~ not
    >>>
    >>> 3 & 1
    >>> 3 & 1
    1
    >>>

    View full-size slide

  115. Bitwise Operators
    & and
    | or
    ^ exclusion or
    >> shift right
    << shift left
    ~ not
    >>>
    >>> 3 & 1
    >>> 3 & 1
    1
    >>>
    >>> 3 & 1
    1
    >>> 1 << 10

    View full-size slide

  116. Bitwise Operators
    & and
    | or
    ^ exclusion or
    >> shift right
    << shift left
    ~ not
    >>>
    >>> 3 & 1
    >>> 3 & 1
    1
    >>>
    >>> 3 & 1
    1
    >>> 1 << 10
    >>> 3 & 1
    1
    >>> 1 << 10
    1024
    >>>

    View full-size slide

  117. Bitwise Operators
    & and
    | or
    ^ exclusion or
    >> shift right
    << shift left
    ~ not
    >>>
    >>> 3 & 1
    >>> 3 & 1
    1
    >>>
    >>> 3 & 1
    1
    >>> 1 << 10
    >>> 3 & 1
    1
    >>> 1 << 10
    1024
    >>>
    >>> 3 & 1
    1
    >>> 1 << 10
    1024
    >>> ~0

    View full-size slide

  118. Bitwise Operators
    & and
    | or
    ^ exclusion or
    >> shift right
    << shift left
    ~ not
    >>>
    >>> 3 & 1
    >>> 3 & 1
    1
    >>>
    >>> 3 & 1
    1
    >>> 1 << 10
    >>> 3 & 1
    1
    >>> 1 << 10
    1024
    >>>
    >>> 3 & 1
    1
    >>> 1 << 10
    1024
    >>> ~0
    >>> 3 & 1
    1
    >>> 1 << 10
    1024
    >>> ~0
    -1
    >>>

    View full-size slide

  119. Comparison Operators
    > greater than
    >= greater than or equal to
    < less than
    <= less than or equal to
    == equal to
    != not equal to

    View full-size slide

  120. List
    Contents are
    surrounded by
    square brackets
    and separate by
    comma.
    >>>

    View full-size slide

  121. List
    Contents are
    surrounded by
    square brackets
    and separate by
    comma.
    >>>
    >>> [“aaa”, “bbb”, 1, 2]

    View full-size slide

  122. List
    Contents are
    surrounded by
    square brackets
    and separate by
    comma.
    >>>
    >>> [“aaa”, “bbb”, 1, 2]
    >>> [“aaa”, “bbb”, 1, 2]
    [‘aaa’, ‘bbb’, 1, 2]
    >>>

    View full-size slide

  123. Initialization / Conversion
    >>>

    View full-size slide

  124. Initialization / Conversion
    >>>
    >>> list([1, 2, 3])

    View full-size slide

  125. Initialization / Conversion
    >>>
    >>> list([1, 2, 3])
    >>> list([1, 2, 3])
    [1, 2, 3]
    >>>

    View full-size slide

  126. Initialization / Conversion
    >>>
    >>> list([1, 2, 3])
    >>> list([1, 2, 3])
    [1, 2, 3]
    >>>
    >>> list([1, 2, 3])
    [1, 2, 3]
    >>> list(“abc”)

    View full-size slide

  127. Initialization / Conversion
    >>>
    >>> list([1, 2, 3])
    >>> list([1, 2, 3])
    [1, 2, 3]
    >>>
    >>> list([1, 2, 3])
    [1, 2, 3]
    >>> list(“abc”)
    >>> list([1, 2, 3])
    [1, 2, 3]
    >>> list(“abc”)
    [‘a’, ‘b’, ‘c’]
    >>>

    View full-size slide

  128. Operators
    + append
    * repeat
    >>>

    View full-size slide

  129. Operators
    + append
    * repeat
    >>>
    >>> x = [1, 2, 3]

    View full-size slide

  130. Operators
    + append
    * repeat
    >>>
    >>> x = [1, 2, 3]
    >>> x = [1, 2, 3]
    >>>

    View full-size slide

  131. Operators
    + append
    * repeat
    >>>
    >>> x = [1, 2, 3]
    >>> x = [1, 2, 3]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]

    View full-size slide

  132. Operators
    + append
    * repeat
    >>>
    >>> x = [1, 2, 3]
    >>> x = [1, 2, 3]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>>

    View full-size slide

  133. Operators
    + append
    * repeat
    >>>
    >>> x = [1, 2, 3]
    >>> x = [1, 2, 3]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2

    View full-size slide

  134. Operators
    + append
    * repeat
    >>>
    >>> x = [1, 2, 3]
    >>> x = [1, 2, 3]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2
    [1, 2, 3, 1, 2, 3]
    >>>

    View full-size slide

  135. Operators
    + append
    * repeat
    >>>
    >>> x = [1, 2, 3]
    >>> x = [1, 2, 3]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2
    [1, 2, 3, 1, 2, 3]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2
    [1, 2, 3, 1, 2, 3]
    >>> x + y

    View full-size slide

  136. Operators
    + append
    * repeat
    >>>
    >>> x = [1, 2, 3]
    >>> x = [1, 2, 3]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2
    [1, 2, 3, 1, 2, 3]
    >>>
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2
    [1, 2, 3, 1, 2, 3]
    >>> x + y
    >>> x = [1, 2, 3]
    >>> y = [‘a’, ‘b’]
    >>> x * 2
    [1, 2, 3, 1, 2, 3]
    >>> x + y
    [1, 2, 3, ‘a’, ‘b’]
    >>>

    View full-size slide

  137. >>>
    Access Element

    View full-size slide

  138. >>>
    >>> x = [1, 2, 3, 4, 5]
    Access Element

    View full-size slide

  139. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    Access Element

    View full-size slide

  140. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    Access Element

    View full-size slide

  141. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>>
    Access Element

    View full-size slide

  142. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    Access Element

    View full-size slide

  143. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    >>>
    Access Element

    View full-size slide

  144. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    >>> x
    Access Element

    View full-size slide

  145. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    >>> x
    >>> x = [1, 2, 3, 4, 5]
    >>> x[1]
    2
    >>> x[1] = ‘0’
    >>> x
    [1, ‘0’, 3, 4, 5]
    >>>
    Access Element

    View full-size slide

  146. >>>
    Slice
    [start:end(:step)]

    View full-size slide

  147. >>>
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  148. >>>
    >>> x = [1, 2, 3, 4, 5]
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  149. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  150. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  151. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  152. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  153. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>>
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  154. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  155. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>>
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  156. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  157. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>>
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  158. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>>
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  159. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>>
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    [1, 3, 5]
    >>>
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  160. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>>
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    [1, 3, 5]
    >>>
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    [1, 3, 5]
    >>> x[::-1]
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  161. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x[::]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>>
    [1, 2, 3, 4, 5]
    >>> x[:]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    [1, 3, 5]
    >>>
    [1, 2, 3, 4, 5]
    >>> x[1:3]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    [1, 3, 5]
    >>> x[::-1]
    [2, 3]
    >>> x[1:-1]
    [2, 3, 4]
    >>> x[::2]
    [1, 3, 5]
    >>> x[::-1]
    [5, 4, 3, 2, 1]
    >>>
    Slice
    [start:end(:step)]
    [0:length(:1)]
    default value

    View full-size slide

  162. >>>
    length of list
    len(list)

    View full-size slide

  163. >>>
    >>> x = [1, 2, 3, 4, 5]
    length of list
    len(list)

    View full-size slide

  164. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    length of list
    len(list)

    View full-size slide

  165. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    length of list
    len(list)

    View full-size slide

  166. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    5
    >>>
    length of list
    len(list)

    View full-size slide

  167. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    5
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    5
    >>> len(x[::2])
    length of list
    len(list)

    View full-size slide

  168. >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> x = [1, 2, 3, 4, 5]
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    5
    >>>
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    5
    >>> len(x[::2])
    >>> x = [1, 2, 3, 4, 5]
    >>> len(x)
    5
    >>> len(x[::2])
    3
    >>>
    length of list
    len(list)

    View full-size slide

  169. Custom Function

    View full-size slide

  170. >>>
    Define a Function

    View full-size slide

  171. >>>
    >>> def SQ(x):
    Define a Function

    View full-size slide

  172. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    Define a Function

    View full-size slide

  173. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    >>> def SQ(x):
    ... return x * x
    Define a Function

    View full-size slide

  174. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    >>> def SQ(x):
    ... return x * x
    >>> def SQ(x):
    ... return x * x
    ...
    Define a Function

    View full-size slide

  175. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    >>> def SQ(x):
    ... return x * x
    >>> def SQ(x):
    ... return x * x
    ...
    >>> def SQ(x):
    ... return x * x
    ...
    >>>
    Define a Function

    View full-size slide

  176. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    >>> def SQ(x):
    ... return x * x
    >>> def SQ(x):
    ... return x * x
    ...
    >>> def SQ(x):
    ... return x * x
    ...
    >>>
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    Define a Function

    View full-size slide

  177. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    >>> def SQ(x):
    ... return x * x
    >>> def SQ(x):
    ... return x * x
    ...
    >>> def SQ(x):
    ... return x * x
    ...
    >>>
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    100
    >>>
    Define a Function

    View full-size slide

  178. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    >>> def SQ(x):
    ... return x * x
    >>> def SQ(x):
    ... return x * x
    ...
    >>> def SQ(x):
    ... return x * x
    ...
    >>>
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    100
    >>>
    Define a Function
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    100
    >>>

    View full-size slide

  179. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    >>> def SQ(x):
    ... return x * x
    >>> def SQ(x):
    ... return x * x
    ...
    >>> def SQ(x):
    ... return x * x
    ...
    >>>
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    100
    >>>
    Define a Function
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    100
    >>>
    function name

    View full-size slide

  180. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    >>> def SQ(x):
    ... return x * x
    >>> def SQ(x):
    ... return x * x
    ...
    >>> def SQ(x):
    ... return x * x
    ...
    >>>
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    100
    >>>
    Define a Function
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    100
    >>>
    function name
    parameter

    View full-size slide

  181. >>>
    >>> def SQ(x):
    >>> def SQ(x):
    ...
    >>> def SQ(x):
    ... return x * x
    >>> def SQ(x):
    ... return x * x
    ...
    >>> def SQ(x):
    ... return x * x
    ...
    >>>
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    100
    >>>
    Define a Function
    >>> def SQ(x):
    ... return x * x
    ...
    >>> SQ(10)
    100
    >>>
    function name
    parameter
    function content

    View full-size slide

  182. Lambda Function
    >>>

    View full-size slide

  183. Lambda Function
    >>>
    >>> CUBE = lambda k: k * k * k

    View full-size slide

  184. Lambda Function
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE = lambda k: k * k * k
    >>>

    View full-size slide

  185. Lambda Function
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE = lambda k: k * k * k
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)

    View full-size slide

  186. Lambda Function
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE = lambda k: k * k * k
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>>

    View full-size slide

  187. Lambda Function
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE = lambda k: k * k * k
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)

    View full-size slide

  188. Lambda Function
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE = lambda k: k * k * k
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    12
    >>>

    View full-size slide

  189. Lambda Function
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE = lambda k: k * k * k
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    12
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    12
    >>>

    View full-size slide

  190. Lambda Function
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE = lambda k: k * k * k
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    12
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    12
    >>>
    parameter

    View full-size slide

  191. Lambda Function
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE = lambda k: k * k * k
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    12
    >>>
    >>> CUBE = lambda k: k * k * k
    >>> CUBE(10)
    1000
    >>> (lambda x, y: x * y)(3, 4)
    12
    >>>
    parameter
    return value

    View full-size slide

  192. Built-in Function

    View full-size slide

  193. range
    >>>
    >>> range(10)

    View full-size slide

  194. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>

    View full-size slide

  195. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)

    View full-size slide

  196. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>>

    View full-size slide

  197. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)

    View full-size slide

  198. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>>

    View full-size slide

  199. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)

    View full-size slide

  200. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>>

    View full-size slide

  201. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>>

    View full-size slide

  202. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>>
    range(stop)

    View full-size slide

  203. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>>
    range(stop)
    range(start, stop)

    View full-size slide

  204. range
    >>>
    >>> range(10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>>
    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> range(3, 10)
    [3, 4, 5, 6, 7, 8, 9]
    >>> range(1, 10, 2)
    [1, 3, 5, 7, 9]
    >>> range(10, 0, -1)
    [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
    >>>
    range(stop)
    range(start, stop)
    range(start, stop, step)

    View full-size slide

  205. >>>
    >>> x = range(1, 11)
    filter

    View full-size slide

  206. >>>
    >>> x = range(1, 11)
    >>> x = range(1, 11)
    >>>
    filter

    View full-size slide

  207. >>>
    >>> x = range(1, 11)
    >>> x = range(1, 11)
    >>>
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    filter

    View full-size slide

  208. >>>
    >>> x = range(1, 11)
    >>> x = range(1, 11)
    >>>
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    [2, 4, 6, 8, 10]
    >>>
    filter

    View full-size slide

  209. >>>
    >>> x = range(1, 11)
    >>> x = range(1, 11)
    >>>
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    [2, 4, 6, 8, 10]
    >>>
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    [2, 4, 6, 8, 10]
    >>>
    filter

    View full-size slide

  210. >>>
    >>> x = range(1, 11)
    >>> x = range(1, 11)
    >>>
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    [2, 4, 6, 8, 10]
    >>>
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    [2, 4, 6, 8, 10]
    >>>
    filter
    a function receive one
    parameter and return
    boolean value

    View full-size slide

  211. >>>
    >>> x = range(1, 11)
    >>> x = range(1, 11)
    >>>
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    [2, 4, 6, 8, 10]
    >>>
    >>> x = range(1, 11)
    >>> filter(lambda k: k % 2 == 0, x)
    [2, 4, 6, 8, 10]
    >>>
    filter
    a function receive one
    parameter and return
    boolean value
    iterable object

    View full-size slide

  212. >>>
    >>> x = range(1, 6)
    map

    View full-size slide

  213. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    map

    View full-size slide

  214. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    map

    View full-size slide

  215. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    [1, 4, 9, 16, 25]
    >>>
    map

    View full-size slide

  216. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    [1, 4, 9, 16, 25]
    >>>
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    [1, 4, 9, 16, 25]
    >>>
    map

    View full-size slide

  217. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    [1, 4, 9, 16, 25]
    >>>
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    [1, 4, 9, 16, 25]
    >>>
    map
    any function receive one
    parameter

    View full-size slide

  218. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    [1, 4, 9, 16, 25]
    >>>
    >>> x = range(1, 6)
    >>> map(lambda k: k * k, x)
    [1, 4, 9, 16, 25]
    >>>
    map
    any function receive one
    parameter
    iterable object

    View full-size slide

  219. >>>
    >>> x = range(1, 6)
    reduce

    View full-size slide

  220. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    reduce

    View full-size slide

  221. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    reduce

    View full-size slide

  222. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    21909
    >>>
    reduce

    View full-size slide

  223. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    21909
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    21909
    >>>
    reduce

    View full-size slide

  224. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    21909
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    21909
    >>>
    reduce
    any function receive two
    parameters

    View full-size slide

  225. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    21909
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    21909
    >>>
    reduce
    any function receive two
    parameters
    iterable object

    View full-size slide

  226. >>>
    >>> x = range(1, 6)
    >>> x = range(1, 6)
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    21909
    >>>
    >>> x = range(1, 6)
    >>> reduce(lambda a, b: a**2 + b, x)
    21909
    >>>
    reduce
    any function receive two
    parameters
    iterable object
    calculate ((((1^2)+2)^2+3)^2+4)^2+5

    View full-size slide

  227. >>>
    factorial

    View full-size slide

  228. >>>
    >>> reduce(lambda a, b: a * b, range(1, 6))
    factorial

    View full-size slide

  229. >>>
    >>> reduce(lambda a, b: a * b, range(1, 6))
    >>> reduce(lambda a, b: a * b, range(1, 6))
    3628800
    >>>
    factorial

    View full-size slide

  230. Help Yourself

    View full-size slide

  231. >>>
    >>> help(reduce)
    Help

    View full-size slide

  232. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    Help

    View full-size slide

  233. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    Help

    View full-size slide

  234. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    Help

    View full-size slide

  235. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    Help

    View full-size slide

  236. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    Help

    View full-size slide

  237. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    Help

    View full-size slide

  238. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    Help

    View full-size slide

  239. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    (END)
    Help

    View full-size slide

  240. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    (END)
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    (END)
    Help

    View full-size slide

  241. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    (END)
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    (END)
    press q
    Help

    View full-size slide

  242. >>>
    >>> help(reduce)
    Help on built-in function reduce in module
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    __builtin__:
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    reduce(...)
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    reduce(function, sequence[, initial]) -
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    > value
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    (END)
    Apply a function of two arguments
    cumulatively to the items of a sequence,
    from left to right, so as to reduce the
    sequence to a single value.
    For example, reduce(lambda x, y: x+y,
    [1, 2, 3, 4, 5]) calculates
    ((((1+2)+3)+4)+5). If initial is
    present, it is placed before the items
    of the sequence in the calculation, and
    serves as a default when the
    sequence is empty.
    (END)
    press q
    >>> help(reduce)
    >>>
    Help

    View full-size slide

  243. pip
    Package manager for Python
    Download package in PyPI (Python Package Index)

    View full-size slide

  244. pip
    Package manager for Python
    Download package in PyPI (Python Package Index)
    https://pypi.python.org/pypi

    View full-size slide

  245. Python Package Index

    View full-size slide

  246. Python Package Index
    There are currently 31069 packages here.

    View full-size slide

  247. Install pip
    $ apt-get install python-pip
    For Ubuntu
    $ brew install python
    For OS X

    View full-size slide

  248. Install Pip on Windows
    Go to https://pypi.python.org/pypi/distribute/0.6.45.
    Download the source code, and unzip it.
    Go to the directory and execute the following
    command.
    > python.exe setup.py install
    Go to http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip,
    and download pip installer.

    View full-size slide

  249. Basic Command
    $ pip install [package_name]
    Install Package
    $ pip uninstall [package_name]
    Uninstall Package
    $ pip search [package_name]
    Search Package

    View full-size slide

  250. All Command
    bundle create pybundles
    freeze
    output all currently installed packages
    (exact versions) to stdout
    help show available commands
    install install packages
    search search PyPI
    uninstall uninstall packages
    unzip unzip individual packages
    zip zip individual packages

    View full-size slide

  251. Install lxml
    $

    View full-size slide

  252. Install lxml
    $
    $ pip install lxml

    View full-size slide

  253. Install lxml
    $
    $ pip install lxml
    $ pip install lxml
    Downloading/unpacking lxml
    $ pip install lxml
    Downloading/unpacking lxml
    Downloading lxml-3.2.1.tar.gz (3.3MB):
    3.3MB downloaded
    Running setup.py egg_info for package
    lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Downloading/unpacking lxml
    Downloading lxml-3.2.1.tar.gz (3.3MB):
    3.3MB downloaded
    Running setup.py egg_info for package
    lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Downloading lxml-3.2.1.tar.gz (3.3MB):
    3.3MB downloaded
    Running setup.py egg_info for package
    lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    3.3MB downloaded
    Running setup.py egg_info for package
    lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    Running setup.py egg_info for package
    lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    warning: no previously-included files
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    warning: no previously-included files
    found matching '*.py'
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    warning: no previously-included files
    found matching '*.py'
    warning: no files found matching
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    warning: no previously-included files
    found matching '*.py'
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    warning: no previously-included files
    found matching '*.py'
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    warning: no previously-included files
    found matching '*.py'
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    Running setup.py install for lxml
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    warning: no previously-included files
    found matching '*.py'
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    warning: no previously-included files
    found matching '*.py'
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    Using build configuration of libxslt
    1.1.26
    warning: no previously-included files
    found matching '*.py'
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    1.1.26
    warning: no previously-included files
    found matching '*.py'
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    warning: no previously-included files
    found matching '*.py'
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    found matching '*.py'
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    '*.txt' under directory 'src/lxml/tests'
    Installing collected packages: lxml
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    Installing collected packages: lxml
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    Running setup.py install for lxml
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    building 'lxml.etree' extension
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    building 'lxml.etree' extension
    cc -fno-strict-aliasing -fno-common -
    Frameworks/Python.framework/Versions/2.7/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    building 'lxml.etree' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    lib/python2.7/distutils/dist.py:267:
    UserWarning: Unknown distribution option:
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    building 'lxml.etree' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    'bugtrack_url'
    warnings.warn(msg)
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    building 'lxml.etree' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    Building lxml version 3.2.1.
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    building 'lxml.etree' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Building without Cython.
    Using build configuration of libxslt
    1.1.26
    building 'lxml.etree' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Using build configuration of libxslt
    1.1.26
    building 'lxml.etree' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    1.1.26
    building 'lxml.etree' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.etree.c -o
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.etree.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -flat_namespace
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.etree.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -flat_namespace
    clang: warning: argument unused during
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.etree.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.etree.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    src/lxml/lxml.etree.c:136289:17:
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.etree.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    src/lxml/lxml.etree.c:136289:17:
    warning: enumeration value
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.etree.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    src/lxml/lxml.etree.c:136289:17:
    warning: enumeration value
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.etree.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    src/lxml/lxml.etree.c:136289:17:
    warning: enumeration value
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    not handled in switch [-Wswitch]
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.etree.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    src/lxml/lxml.etree.c:136289:17:
    warning: enumeration value
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    not handled in switch [-Wswitch]
    switch (__pyx_v_doc_ref->_type)
    {
    python2.7 -c src/lxml/lxml.etree.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    src/lxml/lxml.etree.c:136289:17:
    warning: enumeration value
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    not handled in switch [-Wswitch]
    switch (__pyx_v_doc_ref->_type)
    {
    ^
    lxml.etree.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    src/lxml/lxml.etree.c:136289:17:
    warning: enumeration value
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    not handled in switch [-Wswitch]
    switch (__pyx_v_doc_ref->_type)
    {
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    src/lxml/lxml.etree.c:136289:17:
    warning: enumeration value
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    not handled in switch [-Wswitch]
    switch (__pyx_v_doc_ref->_type)
    {
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    compilation: '-flat_namespace'
    src/lxml/lxml.etree.c:136289:17:
    warning: enumeration value
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    not handled in switch [-Wswitch]
    switch (__pyx_v_doc_ref->_type)
    {
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    src/lxml/lxml.etree.c:136289:17:
    warning: enumeration value
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    not handled in switch [-Wswitch]
    switch (__pyx_v_doc_ref->_type)
    {
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    warning: enumeration value
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    not handled in switch [-Wswitch]
    switch (__pyx_v_doc_ref->_type)
    {
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    '__pyx_e_4lxml_5etree_PARSER_DATA_INVALID'
    not handled in switch [-Wswitch]
    switch (__pyx_v_doc_ref->_type)
    {
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    not handled in switch [-Wswitch]
    switch (__pyx_v_doc_ref->_type)
    {
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    switch (__pyx_v_doc_ref->_type)
    {
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    {
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    ^
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    src/lxml/lxml.etree.c:140375:72:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    *)__pyx_v_self->_context))); if (unlikely(!
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    __pyx_t_1)) {__pyx_filename = __pyx_f[2];
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    __pyx_lineno = 543; __pyx_clineno =
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    __LINE__; goto __pyx_L9;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:141781:70:
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    ^
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    ^
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    src/lxml/lxml.etree.c:141781:70:
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    warning: incompatible pointer types passing
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    'struct __pyx_obj_4lxml_5etree__BaseContext
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    *' to parameter of type 'struct
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    __pyx_obj_4lxml_5etree__XSLTContext *' [-
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    Wincompatible-pointer-types]
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    __pyx_t_1 = ((PyObject
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    *)__pyx_f_4lxml_5etree_12_XSLTContext__copy
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    (((struct
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    __pyx_obj_4lxml_5etree__BaseContext
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    *)__pyx_v_stylesheet->_context))); if
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    (unlikely(!__pyx_t_1)) {__pyx_filename =
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    __pyx_f[2]; __pyx_lineno = 680;
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    __pyx_clineno = __LINE__; goto
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    __pyx_L1_error;}
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:160712:19:
    src/lxml/lxml.etree.c:138310:138: note:
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    passing argument to parameter
    '__pyx_v_self' here
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    Wunused-value]
    static struct
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    __pyx_obj_4lxml_5etree__BaseContext
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    *__pyx_f_4lxml_5etree_12_XSLTContext__copy(
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    struct __pyx_obj_4lxml_5etree__XSLTContext
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    *__pyx_v_self) {
    ^
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ^
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    ^
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    src/lxml/lxml.etree.c:160712:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:162525:19:
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    ^
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    src/lxml/lxml.etree.c:162525:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:168081:19:
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    ^
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    src/lxml/lxml.etree.c:168081:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:170771:19:
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    ^
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    src/lxml/lxml.etree.c:170771:19:
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    warning: expression result unused [-
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    Wunused-value]
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:12770:13:
    PyObject_INIT(o, t);
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    ^
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    /usr/local/Cellar/python/2.7.5/
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    Frameworks/Python.framework/Versions/2.7/
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    include/python2.7/objimpl.h:164:69: note:
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    expanded from macro 'PyObject_INIT'
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    ( Py_TYPE(op) = (typeobj),
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    _Py_NewReference((PyObject *)(op)), (op) )
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    ^
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    8 warnings generated.
    src/lxml/lxml.etree.c:12770:13:
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    warning: function
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    '__pyx_f_4lxml_5etree_displayNode' is not
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    needed and will not be emitted [-Wunneeded-
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    internal-declaration]
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    static void
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    __pyx_f_4lxml_5etree_displayNode(xmlNode
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    *__pyx_v_c_node, PyObject *__pyx_v_indent)
    {
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    {
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    ^
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    8 warnings generated.
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    lxml.etree.o -lxslt -lexslt -lxml2 -lz -lm
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    -o build/lib.macosx-10.8-x86_64-2.7/lxml/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    etree.so
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    building 'lxml.objectify' extension
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    cc -fno-strict-aliasing -fno-common -
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    dynamic -I/usr/local/include -I/usr/local/
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    opt/sqlite/include -DNDEBUG -g -fwrapv -O3
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    -Wall -Wstrict-prototypes -I/usr/include/
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    libxml2 -I/private/var/folders/yx/
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    3cgqr5y50vnf9ts91m5x073r0000gn/T/pip-build-
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    KuoE0/lxml/src/lxml/includes -I/usr/local/
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -lxslt -lexslt -lxml2 -lz
    Cellar/python/2.7.5/Frameworks/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -lxslt -lexslt -lxml2 -lz
    -lm -o build/lib.macosx-10.8-x86_64-2.7/
    Python.framework/Versions/2.7/include/
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -lxslt -lexslt -lxml2 -lz
    -lm -o build/lib.macosx-10.8-x86_64-2.7/
    lxml/objectify.so
    python2.7 -c src/lxml/lxml.objectify.c -o
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -lxslt -lexslt -lxml2 -lz
    -lm -o build/lib.macosx-10.8-x86_64-2.7/
    lxml/objectify.so
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -lxslt -lexslt -lxml2 -lz
    -lm -o build/lib.macosx-10.8-x86_64-2.7/
    lxml/objectify.so
    warning: no files found matching
    lxml.objectify.o -flat_namespace
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -lxslt -lexslt -lxml2 -lz
    -lm -o build/lib.macosx-10.8-x86_64-2.7/
    lxml/objectify.so
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    clang: warning: argument unused during
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -lxslt -lexslt -lxml2 -lz
    -lm -o build/lib.macosx-10.8-x86_64-2.7/
    lxml/objectify.so
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Successfully installed lxml
    compilation: '-flat_namespace'
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -lxslt -lexslt -lxml2 -lz
    -lm -o build/lib.macosx-10.8-x86_64-2.7/
    lxml/objectify.so
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Successfully installed lxml
    Cleaning up...
    cc -bundle -undefined dynamic_lookup -
    L/usr/local/lib -L/usr/local/opt/sqlite/lib
    build/temp.macosx-10.8-x86_64-2.7/src/lxml/
    lxml.objectify.o -lxslt -lexslt -lxml2 -lz
    -lm -o build/lib.macosx-10.8-x86_64-2.7/
    lxml/objectify.so
    warning: no files found matching
    '*.txt' under directory 'src/lxml/tests'
    Successfully installed lxml
    Cleaning up...
    $

    View full-size slide

  254. Use lxml
    >>>
    >>> import lxml

    View full-size slide

  255. Use lxml
    >>>
    >>> import lxml
    >>> import lxml
    >>>

    View full-size slide

  256. SimpleHTTPServer

    View full-size slide

  257. Launch a Web Server
    $

    View full-size slide

  258. Launch a Web Server
    $
    $ pythom -m SimpleHTTPServer

    View full-size slide

  259. Launch a Web Server
    $
    $ pythom -m SimpleHTTPServer
    $ pythom -m SimpleHTTPServer
    Serving HTTP on 0.0.0.0 port 8000 ...

    View full-size slide

  260. Connect to http://localhost:8000

    View full-size slide

  261. Web Framework

    View full-size slide

  262. Micro framework
    Full-stack framework

    View full-size slide

  263. Thank You for Your Listening.

    View full-size slide