Download - Python - the basics
![Page 1: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/1.jpg)
TRAINING PYTHON INTRODUCTION TO PYTHON
(BASIC LEVEL) Editor: Nguyễn Đức Minh Khôi
@HCMC University of Technology, September 2011
![Page 2: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/2.jpg)
TRAINING PYTHON Chapter 0: INTRODUCTION TO PYTHON
9/2/2011 Training Python Chapte 0: Introduction to Python 1
![Page 3: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/3.jpg)
CONTENTS
Python in general
How Python program runs?
How to run Python?
9/2/2011 Training Python Chapte 0: Introduction to Python 2
![Page 4: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/4.jpg)
Python in general
• What is python?
• High level programming language
• Emphasize on code readability
• Very clear syntax + large and comprehensive standard library
• Use of indentation for block delimiters
• Multiprogramming paradigm: OO, imperative, functional,
procedural, reflective
• A fully dynamic type system and automatic memory management
• Scripting language + standalone executable program + interpreter
• Can run on many platform: Windows, Linux, Mactonish
• Updates:
• Newest version: 3.2.2 (CPython, JPython, IronPython)
• Website: www.python.org
9/2/2011 Training Python Chapte 0: Introduction to Python 3
![Page 5: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/5.jpg)
Python in general (Cont’)
• Advantages:
• Software quality
• Developer productivity
• Program portability
• Support libraries
• Component integration
• Enjoyment
• Disadvantages:
• not always be as fast as that of compiled languages such as C and
C++
9/2/2011 Training Python Chapte 0: Introduction to Python 4
![Page 6: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/6.jpg)
Python in general (Cont’)
• Applications of python:
9/2/2011 Training Python Chapte 0: Introduction to Python 5
![Page 7: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/7.jpg)
Python in general (Cont’)
• Python’s Capability:
• System Programming
• GUI
• Internet Scripting
• Component Integration
• Database Programming
• Rapid Prototyping
• Numeric and Scientific Programming
• Gaming, Images, Serial Ports, XML, Robots, and More
9/2/2011 Training Python Chapte 0: Introduction to Python 6
![Page 8: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/8.jpg)
How Python program runs?
9/2/2011 Training Python Chapte 0: Introduction to Python 7
Notice: pure Python code runs at speeds somewhere between those of
a traditional compiled language and a traditional interpreted language
![Page 9: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/9.jpg)
How to run Python?
• Install Python 3.2.2:
• Go to website:
http://www.python.org/download/ and
download the latest version of Python
• Run and install follow the instructions
of the .msi file
• If you successfully install, you will see
this picture:
• Coding Python:
• Not IDE support: use notepad++
http://notepad-plus-plus.org/
• Use IDE support: Eclipse (3.7) or
Netbeans (7.0)
9/2/2011 Training Python Chapte 0: Introduction to Python 8
![Page 10: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/10.jpg)
How to run Python? (Cont’)
• Install Eclipse: follow the instructions from this website:
http://wiki.eclipse.org/FAQ_Where_do_I_get_and_install_Eclipse%3F
(you should download the Eclipse Classics version)
• Install Pydev plugin for eclipse: follow this instruction:
http://pydev.org/manual_101_install.html
9/2/2011 Training Python Chapte 0: Introduction to Python 9
![Page 11: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/11.jpg)
THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi
Contact: [email protected]
Main reference: Part I – Getting Started
Learning Python – O’reilly
9/2/2011 Training Python Chapte 0: Introduction to Python 10
![Page 12: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/12.jpg)
TRAINING PYTHON CHAPTER 1: TYPES AND OPERATIONS
![Page 13: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/13.jpg)
CONTENTS
Lists
Dictionaries
Tuples
Files
Numeric Typing
Dynamic Typing
Summary
![Page 14: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/14.jpg)
Lists
• Ordered collections of arbitrary objects
• Accessed by offset
• Variable-length, heterogeneous, and arbitrarily nestable
• Of the category “mutable sequence”
• Arrays of object references
5/22/2011 Training Python 3
![Page 15: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/15.jpg)
Lists literals and operations
5/22/2011 Training Python 4
![Page 16: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/16.jpg)
Lists literals and operations (cont’)
5/22/2011 Training Python 5
![Page 17: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/17.jpg)
Dictionaries
• Accessed by key, not offset
• Accessed by key, not offset
• Variable-length, heterogeneous, and arbitrarily nestable
• Of the category “mutable mapping”
• Tables of object references (hash tables)
5/22/2011 Training Python 6
![Page 18: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/18.jpg)
Dictionaries literals and operations
5/22/2011 Training Python 7
![Page 19: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/19.jpg)
Dictionaries literals and operations (c)
5/22/2011 Training Python 8
![Page 20: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/20.jpg)
Tuples
• Ordered collections of arbitrary objects
• Accessed by offset
• Of the category “immutable sequence”
• Fixed-length, heterogeneous, and arbitrarily nestable
• Arrays of object references
5/22/2011 Training Python 9
![Page 21: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/21.jpg)
Tuples literals and operations
5/22/2011 Training Python 10
![Page 22: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/22.jpg)
Tuples literals and operations (con’t)
5/22/2011 Training Python 11
![Page 23: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/23.jpg)
Files – common operations
5/22/2011 Training Python 12
![Page 24: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/24.jpg)
NUMERIC TYPES
• Integers and floating-point numbers
• Complex numbers
• Fixed-precision decimal numbers
• Rational fraction numbers
• Sets
• Booleans
• Unlimited integer precision
• A variety of numeric built-ins and modules
2
![Page 25: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/25.jpg)
NUMERIC TYPES (Cont’)
3
![Page 26: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/26.jpg)
NUMERIC TYPES (Cont’)
4
![Page 27: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/27.jpg)
Dynamic Typing
• Variables, Objects, References:
• Variables are entries in a system table, with spaces for links to
objects.
• Objects are pieces of allocated memory, with enough space to
represent the values for which they stand.
• References are automatically followed pointers from variables to
objects.
![Page 28: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/28.jpg)
Dynamic Typing (Cont’) - Shared references
• Immutable types:
![Page 29: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/29.jpg)
Dynamic Typing (Cont’) - Shared references • Mutable types:
• Notices:
• It’s also just the default: if you don’t want such behavior, you can
request that Python copy objects instead of making references.
![Page 30: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/30.jpg)
Dynamic Typing (Cont’) - Shared references
• Notices (next):
• “is” function returns False if the names point to equivalent but different
objects, as is the case when we run two different literal expressions.
• Small integers and strings are cached and reused, though, is tells us
they reference the same single object.
![Page 31: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/31.jpg)
Summary
• Object just classification
5/22/2011 Training Python 13
![Page 32: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/32.jpg)
Summary (con’t)
• Object Flexibility
• Lists, dictionaries, and tuples can hold any kind of object.
• Lists, dictionaries, and tuples can be arbitrarily nested.
• Lists and dictionaries can dynamically grow and shrink.
• Object copy
• Slice expressions with empty limits (L[:]) copy sequences.
• The dictionary and set copy method (X.copy()) copies a dictionary
or set.
• Some built-in functions, such as list, make copies (list(L)).
• The copy standard library module makes full copies.
5/22/2011 Training Python 14
![Page 33: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/33.jpg)
THANKS FOR LISTENINGEditor: Nguyễn Đức Minh Khôi
Contact: [email protected]
Main reference: Part II – Types and Operations
Learning Python – O’reilly
9/2/2011 Learning Python Chapter 1 1
![Page 34: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/34.jpg)
TRAINING PYTHON
STATEMENTS AND SYNTAX
9/2/2011 Learning Python Chapter 2 1
![Page 35: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/35.jpg)
Content
Statements
Assignment, Expression, Print
Conditional statements
Loop statements
Iterations and comprehensions
9/2/2011 Learning Python Chapter 2 2
![Page 36: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/36.jpg)
Python program structures:
• Programs are composed of modules.
• Modules contain statements.
• Statements contain expressions.
• Expressions create and process objects.
9/2/2011 Learning Python Chapter 2 3
![Page 37: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/37.jpg)
Python statements
9/2/2011 Learning Python Chapter 2 4
![Page 38: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/38.jpg)
Python statements (Cont’)
9/2/2011 Learning Python Chapter 2 5
![Page 39: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/39.jpg)
Python statements (Cont’)
9/2/2011 Learning Python Chapter 2 6
![Page 40: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/40.jpg)
Assignment Statements Assignment Properties:
• Assignments create object references
• Names are created when first assigned
• Names must be assigned before being referenced
• Some operations perform assignments implicitly
Assignment Statement Forms:
9/2/2011 Learning Python Chapter 2 7
![Page 41: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/41.jpg)
Variable name rules (opt)
• Syntax: (underscore or letter) + (any number of letters,
digits, or underscores)
• Case matters: SPAM is not the same as spam
• Reserved words are off-limits
9/2/2011 Learning Python Chapter 2 8
![Page 42: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/42.jpg)
Expression Statements
9/2/2011 Learning Python Chapter 2 9
![Page 43: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/43.jpg)
Print Operations
• Call format
• Example:
9/2/2011 Learning Python Chapter 2 10
![Page 44: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/44.jpg)
Conditional Statements - IF
• General Format:
• The if/else ternary expression:
• Example:
9/2/2011 Learning Python Chapter 2 11
![Page 45: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/45.jpg)
IF Statements - Truth tests (opt)
Conditional expression:
• Any nonzero number or nonempty object is true.
• Zero numbers, empty objects, and the special object None are
considered false.
• Comparisons and equality tests are applied recursively to data
structures.
• Comparisons and equality tests return True or False (custom versions
of 1 and 0).
• Boolean “and” and “or” operators return a true or false operand
object.
9/2/2011 Learning Python Chapter 2 12
![Page 46: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/46.jpg)
IF Statements - Truth tests (opt) (Cont)
• “and” and “or” operands:
9/2/2011 Learning Python Chapter 2 13
![Page 47: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/47.jpg)
Loop Statements – while statements
• General while format:
• Notice:
9/2/2011 Learning Python Chapter 2 14
![Page 48: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/48.jpg)
Loop Statements – for statements
• General Format:
• Loop Coding Techniques: • The built-in range function produces a series of successively higher
integers, which can be used as indexes in a for.
• The built-in zip function returns a series of parallel-item tuples, which can be used to traverse multiple sequences in a for.
• Notice: for loops typically run quicker than while-based counter loops, it’s to your advantage to use tools like these that allow you to use for when possible.
9/2/2011 Learning Python Chapter 2 15
![Page 49: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/49.jpg)
Loop statements - examples
9/2/2011 Learning Python Chapter 2 16
![Page 50: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/50.jpg)
Iterations and comprehensions
• Iterable:
• an object is considered iterable if it is either a physically stored
sequence or an object that produces one result at a time in the
context of an iteration tool like a for loop.
• iterable objects include both physical sequences and virtual
sequences computed on demand.
• Iterations:
• Any object with a __next__ method to advance to a next result,
which raises StopIteration at the end of the series of results, is
considered iterable in Python.
• Example:
9/2/2011 Learning Python Chapter 2 17
![Page 51: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/51.jpg)
List comprehension
• Example:
• (x + 10): arbitrary expression
• (for x in L): iterable object
• Extend List Comprehension:
9/2/2011 Learning Python Chapter 2 18
![Page 52: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/52.jpg)
New Iterator in Python 3.0
• Iterators associated:
• built-in type :set, list, dictionary, tuple, file
• Dictionary method: keys, values, items
• Built-in function: range (multiple iterator), map, zip, filter (single)
• Examples:
9/2/2011 Learning Python Chapter 2 19
![Page 53: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/53.jpg)
9/2/2011 Learning Python Chapter 2 20
Iterators examples (cont’)
![Page 54: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/54.jpg)
THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi
Contact: [email protected]
Main reference: Part III – Statements and Syntax
Learning Python – O’reilly
9/2/2011 Learning Python Chapter 2 21
![Page 55: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/55.jpg)
TRAINING PYTHON
Chapter 3: FUNCTION
9/6/2011 Training Python Chapter 3 1
![Page 56: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/56.jpg)
CONTENTS
Function Basics
Scope
Arguments
Function Advanced
Iterations and Comprehension Advanced
9/6/2011 Training Python Chapter 3 2
![Page 57: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/57.jpg)
Function Basics
• Function: A function is a device that groups a set of
statements so they can be run more than once in a
program.
• Why use?:
• Maximizing code reuse and minimizing redundancy
• Procedural decomposition
9/6/2011 Training Python Chapter 3 3
![Page 58: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/58.jpg)
Function Basics – def Statements
• General format:
• Use “def” statements:
9/6/2011 Training Python Chapter 3 4
![Page 59: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/59.jpg)
Function Basics – Examples
9/6/2011 Training Python Chapter 3 5
![Page 60: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/60.jpg)
Scopes
• Three different scopes
• If a variable is assigned inside a def, it is local to that function.
• If a variable is assigned in an enclosing def, it is nonlocal to nested
functions.
• If a variable is assigned outside all defs, it is global to the entire file.
• Notice:
• All names assigned inside a function def statement (or a lambda,
an expression we’ll meet later) are locals by default.
• Functions can freely use names as-signed in syntactically
enclosing functions and the global scope, but they must declare
such nonlocals and globals in order to change them.
9/6/2011 Training Python Chapter 3 6
![Page 61: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/61.jpg)
Scopes – the LEGB rules
9/6/2011 Training Python Chapter 3 7
![Page 62: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/62.jpg)
Scopes – examples
9/6/2011 Training Python Chapter 3 8
Global names: X, func
Local names: Y, Z
# The Built – in Scopes
![Page 63: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/63.jpg)
Scopes – Global statements
• Global Statement:
• Other ways to access Globals:
9/6/2011 Training Python Chapter 3 9
![Page 64: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/64.jpg)
Scopes – Global statements(Cont’)
9/6/2011 Training Python Chapter 3 10
![Page 65: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/65.jpg)
Scopes – Nested functions
• Factory function • These terms refer to a function object that remembers values in enclosing
scopes regardless of whether those scopes are still present in memory.
9/6/2011 Training Python Chapter 3 11
![Page 66: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/66.jpg)
Scopes – Nested scope (Cont’)
• Nested scope and lambda:
9/6/2011 Training Python Chapter 3 12
![Page 67: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/67.jpg)
Scopes – Nonlocal statements
• The nonlocal statement:
• Is a close cousin to global
• Like global: nonlocal declares that a name will be changed in an
enclosing scope.
• Unlike global:
• nonlocal applies to a name in an enclosing function’s scope, not the
global module scope outside all defs.
• nonlocal names must already exist in the enclosing function’s scope
when declared
• Format:
9/6/2011 Training Python Chapter 3 13
![Page 68: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/68.jpg)
Scopes – Nonlocal statements (Con’t)
9/6/2011 Training Python Chapter 3 14
![Page 69: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/69.jpg)
Arguments – Passing Basics
• Arguments are passed by automatically assigning objects to local
variable names.
• Assigning to argument names inside a function does not affect the
caller.
• Changing a mutable object argument in a function may impact the
caller.
• Immutable arguments are effectively passed “by value.”
• Mutable arguments are effectively passed “by pointer.”
9/6/2011 Training Python Chapter 3 15
![Page 70: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/70.jpg)
Arguments – Matching Modes
• Keyword-only arguments: arguments that must be passed by keyword
only and will never be filled in by a positional argument.
9/6/2011 Training Python Chapter 3 16
![Page 71: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/71.jpg)
Arguments - Examples
9/6/2011 Training Python Chapter 3 17
![Page 72: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/72.jpg)
Arguments – Examples (Cont’)
9/6/2011 Training Python Chapter 3 18
![Page 73: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/73.jpg)
Arguments – Bonus Points
9/6/2011 Training Python Chapter 3 19
![Page 74: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/74.jpg)
Function Advanced
• General guidelines:
• Coupling: use arguments for inputs and return for outputs.
• Coupling: use global variables only when truly necessary.
• Coupling: don’t change mutable arguments unless the caller
expects it.
• Cohesion: each function should have a single, unified purpose.
• Size: each function should be relatively small.
• Coupling: avoid changing variables in another module file directly.
9/6/2011 Training Python Chapter 3 20
![Page 75: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/75.jpg)
Function Advanced - Recursions • Examples:
• Alternatives:
9/6/2011 Training Python Chapter 3 21
![Page 76: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/76.jpg)
Function Advanced – Lambda Expression
• Lambda format:
• Use lambda for: • inline a function definition
• defer execution of a piece of code
• Notices: • lambda is an expression, not a statement
• lambda’s body is a single expression, not a block of statements.
• If you have larger logic to code, use def; lambda is for small pieces of
inline code. On the other hand, you may find these techniques useful in
moderation
• Examples:
9/6/2011 Training Python Chapter 3 22
![Page 77: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/77.jpg)
Lambda Expression (Cont’)
• Logic within lambda function:
• Nested lambda:
• Used with map function:
• Used with filter function:
• Used with reduce function:
9/6/2011 Training Python Chapter 3 23
![Page 78: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/78.jpg)
Iterations and Comprehension Part 2
• List Comprehension: • Vs. Map:
• Vs. filter:
• Vs. Nested for:
9/6/2011 Training Python Chapter 3 24
![Page 79: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/79.jpg)
Iterations and Comprehension Part 2
• Generators:
• Generator functions: are coded as normal def statements but use
yield statements to return results one at a time, suspending and
resuming their state between each.
• Generator expressions: are similar to the list comprehensions
of the prior section, but they return an object that produces results
on demand instead of building a result list.
• Generator functions:
9/6/2011 Training Python Chapter 3 25
![Page 80: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/80.jpg)
Iterations and Comprehension Part 2
• Generator Expression:
9/6/2011 Training Python Chapter 3 26
![Page 81: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/81.jpg)
3.0 Comprehension Syntax
9/6/2011 Training Python Chapter 3 27
![Page 82: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/82.jpg)
Function Pitfall
• “List comprehensions were nearly twice as fast as equivalent for
loop statements, and map was slightly quicker than list
comprehensions when mapping a built-in function such as abs
(absolute value)”
• Python detects locals statically, when it compiles the def’s code,
rather than by noticing assignments as they happen at runtime.
9/6/2011 Training Python Chapter 3 28
![Page 83: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/83.jpg)
THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi
Contact: [email protected]
Main reference: Part IV – Functions
Learning Python 4th Edition – O’reilly 2010
9/6/2011 Learning Python Chapter 2 29
![Page 84: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/84.jpg)
TRAINING PYTHON
Chapter 4: MODULES
![Page 85: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/85.jpg)
Contents
Modules Basics
Modules Package
Modules in advance
9/15/2011 Training Python Chapter 4 2
![Page 86: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/86.jpg)
Modules Basics
• Modules are process with:
• import: Lets a client (importer) fetch a module as a whole
• from: Allows clients to fetch particular names from a module
• imp.reload: Provides a way to reload a module’s code without
stopping Python
• Why use Modules?
• Code reuse
• System namespace partitioning
• Implementing service or data
9/15/2011 Training Python Chapter 4 3
![Page 87: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/87.jpg)
Modules Basics – import statements
• How imports work?
1. Find the module’s file.
2. Compile it to byte code (if needed).
3. Run the module’s code to build the objects it defines.
• The Module Search Path:
1. The home directory of the program
2. PYTHONPATH directories (if set)
3. Standard library directories
4. The contents of any .pth files (if present)
9/15/2011 Training Python Chapter 4 4
![Page 88: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/88.jpg)
Modules Basics – create Modules
• In fact, both the names of module files and the names of
directories used in package must conform to the rules for
variable names:
• They may, for instance, contain only letters, digits, and
underscores.
• Package directories also cannot contain platform-specific syntax
such as spaces in their names.
• Modules in Python can be written in external languages
such as C/C++ in Cpython, Java in Jython, .net languages
in IronPython
9/15/2011 Training Python Chapter 4 5
![Page 89: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/89.jpg)
Modules Basics - Usages
• The import statement:
• The from statement:
• The from * statement
• The import happens only once
9/15/2011 Training Python Chapter 4 6
![Page 90: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/90.jpg)
Modules Basics – Usages (Con’t) • Import assigns an entire module object to a single name.
• From assigns one or more names to objects of the same names in
another module.
Be careful:
9/15/2011 Training Python Chapter 4 7
![Page 91: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/91.jpg)
Modules Basics - namespaces
• Files generate Namespaces:
• Module statements run on the first import.
• Top-level assignments create module attributes.
• Module namespaces can be accessed via the attribute__dict__or dir(M)
• Modules are a single scope (local is global)
• Namespace nesting:
• In mod3.py:
• In mod2.py:
• In mod1.py:
9/15/2011 Training Python Chapter 4 8
![Page 92: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/92.jpg)
Modules Basics – reloading function
• Unlike import and from:
• reload is a function in Python, not a statement.
• reload is passed an existing module object, not a name.
• reload lives in a module in Python 3.0 and must be imported itself.
• How to use:
9/15/2011 Training Python Chapter 4 9
![Page 93: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/93.jpg)
Modules Basics – reload example
• In changer.py:
• Change global message variable:
•
9/15/2011 Training Python Chapter 4 10
![Page 94: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/94.jpg)
Modules package
• Package __init__.py files:
• Directory: dir0\dir1\dir2\mod.py
• Import statement: import dir1.dir2.mod
• Rules:
• dir1 and dir2 both must contain an __init__.py file.
• dir0, the container, does not require an __init__.py file; this file will
simply be ignored if present.
• dir0, not dir0\dir1, must be listed on the module search path (i.e., it must
be the home directory, or be listed in your PYTHONPATH, etc.).
• Present in tree mode:
9/15/2011 Training Python Chapter 4 11
![Page 95: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/95.jpg)
Modules package
• Relative import:
• instructs Python to import a module named spam located in the
same package directory as the file in which this statement appears.
• Sibling import:
9/15/2011 Training Python Chapter 4 12
![Page 96: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/96.jpg)
Modules In Advance – Data Hiding
• Minimizing from * Damage: _X and __all__
• you can prefix names with a single underscore (e.g., _X) to prevent
them from being copied out when a client imports a module’s
names with a from * statement.
• Enabling future language features
• Mixed Usage Modes: __name__ and __main__
• If the file is being run as a top-level program file, __name__ is set
to the string "__main__" when it starts.
• If the file is being imported instead, __name__ is set to the
module’s name as known by its clients
9/15/2011 Training Python Chapter 4 13
![Page 97: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/97.jpg)
Modules in Advance (Cont’)
• In runme.py:
• Unit Tests with __name__:
• we can wrap up the self-test call in a __name__ check, so that it
will be launched only when the file is run as a top-level script, not
when it is imported
9/15/2011 Training Python Chapter 4 14
![Page 98: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/98.jpg)
Modules in Advance (Cont’)
• The as Extension for import and from:
9/15/2011 Training Python Chapter 4 15
![Page 99: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/99.jpg)
Module Gotchas
• Statement Order Matters in Top-Level Code
• from Copies Names but Doesn’t Link
• from * Can Obscure the Meaning of Variables
• Recursive from Imports May Not Work
• You can usually eliminate import cycles like this by careful design—
maximizing cohesion and minimizing coupling are good first steps.
9/15/2011 Training Python Chapter 4 16
![Page 100: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/100.jpg)
THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi
Contact: [email protected]
Main reference: Part V – Modules
Learning Python 4th Edition – O’reilly 2010
![Page 101: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/101.jpg)
TRAINING PYTHON
Chapter 5: CLASSES AND OOP
![Page 102: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/102.jpg)
Contents
Class Coding Basics
Class Coding Detail
Advanced Class topics
9/18/2011 Training Python Chapter 5: Classes and OOP 2
![Page 103: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/103.jpg)
Class Coding Basics
• OOP program must show:
• Abstraction (or sometimes called encapsulation)
• Inheritance (vs. composition)
• Polymorphism
• Class vs. Instance Object:
• Class: Serve as instance factories. Their attributes provide
behavior—data and functions—that is inherited by all the instances
generated from them.
• Instance: Represent the concrete items in a program’s domain.
Their attributes record data that varies per specific object
9/18/2011 Training Python Chapter 5: Classes and OOP 3
![Page 104: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/104.jpg)
Class Coding Basics (Cont’)
• Each class statement generates a new class object.
• Each time a class is called, it generates a new instance object.
• Instances are automatically linked to the classes from which they are created.
• Classes are linked to their superclasses by listing them in parentheses in a class
header line; the left-to-right order there gives the order in the tree.
9/18/2011 Training Python Chapter 5: Classes and OOP 4
![Page 105: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/105.jpg)
Class Coding Basics – Class trees
• Notice:
• Python uses multiple inheritance: if there is more than one
superclass listed in parentheses in a class statement (like C1’s
here), their left-to-right order gives the order in which those
superclasses will be searched for attributes.
• Attributes are usually attached to classes by assignments made
within class statements, and not nested inside function def
statements.
• Attributes are usually attached to instances by assignments to a
special argument passed to functions inside classes, called self.
9/18/2011 Training Python Chapter 5: Classes and OOP 5
![Page 106: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/106.jpg)
Class Coding Basics - Class vs. Instance
• Class Object:
• The class statement creates a class object and assigns it a name.
• Assignments inside class statements make class attributes.
• Class attributes provide object state and behavior.
• Instance Object:
• Calling a class object like a function makes a new instance object.
• Each instance object inherits class attributes and gets its own
namespace.
• Assignments to attributes of self in methods make per-instance
attributes.
9/18/2011 Training Python Chapter 5: Classes and OOP 6
![Page 107: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/107.jpg)
Class Coding Basics ©
• First Example:
9/18/2011 Training Python Chapter 5: Classes and OOP 7
![Page 108: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/108.jpg)
Class Coding Basics - Inheritance
• Attribute inheritance:
• Superclasses are listed in parentheses in a class header.
• Classes inherit attributes from their superclasses.
• Instances inherit attributes from all accessible classes.
• Each object.attribute reference invokes a new, independent search.
• Logic changes are made by subclassing, not by changing
superclasses.
9/18/2011 Training Python Chapter 5: Classes and OOP 8
![Page 109: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/109.jpg)
Class Coding Basics – Inheritance © • Second Example:
9/18/2011 Training Python Chapter 5: Classes and OOP 9
![Page 110: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/110.jpg)
Class Coding Details
• Class statement:
• Examples:
9/18/2011 Training Python Chapter 5: Classes and OOP 10
Assigning names inside the class statement makes class attributes,
and nested defs make class methods, but other assignments make
attributes, too.
![Page 111: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/111.jpg)
Class Coding Details ©
• Method call:
• Example:
9/18/2011 Training Python Chapter 5: Classes and OOP 11
![Page 112: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/112.jpg)
Class Coding Details - Inheritance
• Example:
9/18/2011 Training Python Chapter 5: Classes and OOP 12
![Page 113: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/113.jpg)
Class Coding Details – Inheritance © • Class Interface Techniques:
• Real:
9/18/2011 Training Python Chapter 5: Classes and OOP 13
![Page 114: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/114.jpg)
Class Coding Details – Inheritance ©
9/18/2011 Training Python Chapter 5: Classes and OOP 14
![Page 115: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/115.jpg)
Class Coding Details – Inheritance ©
• Abstract superclass:
9/18/2011 Training Python Chapter 5: Classes and OOP 15
![Page 116: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/116.jpg)
Class Coding Details © • Python namespaces – Assignments Classify names:
9/18/2011 Training Python Chapter 5: Classes and OOP 16
![Page 117: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/117.jpg)
Class Coding Details – operator overloading • Common operator overloading method:
9/18/2011 Training Python Chapter 5: Classes and OOP 17
![Page 118: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/118.jpg)
Class Coding Details – operator overloading ©
9/18/2011 Training Python Chapter 5: Classes and OOP 18
![Page 119: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/119.jpg)
Advanced Class topics - Relationships • Is – relationship vs. has - relationship
9/18/2011 Training Python Chapter 5: Classes and OOP 19
In employees.py file
Express: inheritance
– is relationship
![Page 120: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/120.jpg)
Advanced Class topics – Relationships ©
9/18/2011 Training Python Chapter 5: Classes and OOP 20
In pizzashop.py file
Express: has - relationship
![Page 121: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/121.jpg)
Advanced Class topics – Extending built in types • By embedding:
9/18/2011 Training Python Chapter 5: Classes and OOP 21
![Page 122: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/122.jpg)
Advanced Class topics – Extending built in types
• By subclassing:
9/18/2011 Training Python Chapter 5: Classes and OOP 22
![Page 123: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/123.jpg)
Advanced Class topics –
Diamond Inheritance
• Old and new style inheritance:
9/18/2011 Training Python Chapter 5: Classes and OOP 23
![Page 124: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/124.jpg)
Advanced Class topics –
Diamond Inheritance • Explicit Conflict Resolution:
9/18/2011 Training Python Chapter 5: Classes and OOP 24
![Page 125: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/125.jpg)
Advanced Class topics –
static class method
• Notice:
9/18/2011 Training Python Chapter 5: Classes and OOP 25
![Page 126: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/126.jpg)
Advanced Class topics –
static and class method
9/18/2011 Training Python Chapter 5: Classes and OOP 26
![Page 127: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/127.jpg)
Advanced Class topics - Decorators
• Function decorators provide a way to specify special operation
modes for functions, by wrapping them in an extra layer of logic
implemented as another function.
• Syntax:
• Example:
9/18/2011 Training Python Chapter 5: Classes and OOP 27
![Page 128: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/128.jpg)
Advanced Class topics – Decorators ©
• Class decorators are similar to function decorators, but they are run
at the end of a class statement to rebind a class name to a callable.
• Syntax:
• Example:
9/18/2011 Training Python Chapter 5: Classes and OOP 28
![Page 129: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/129.jpg)
Advanced Class topics – Class gotchas
• Changing Class Attributes Can Have Side Effects
• Changing Mutable Class Attributes Can Have Side
Effects, Too
• Multiple Inheritance: Order Matters
• multiple inheritance works best when your mix-in classes are as
self-contained as possible—because they may be used in a variety
of contexts, they should not make assumptions about names
related to other classes in a tree.
9/18/2011 Training Python Chapter 5: Classes and OOP 29
![Page 130: Python - the basics](https://reader034.vdocument.in/reader034/viewer/2022051311/5406debd8d7f7288088b4840/html5/thumbnails/130.jpg)
THANKS FOR LISTENING Editor: Nguyễn Đức Minh Khôi
Contact: [email protected]
Main reference: Part VI – Classes and OOP
Learning Python 4th Edition – O’reilly 2010