Training python (new Updated)

151
TRAINING PYTHON INTRODUCTION TO PYTHON (BASIC LEVEL) Editor: Nguyễn Đức Minh Khôi @HCMC University of Technology, September 2011

description

This is the same as the slide I had published, I add new chapter to it.

Transcript of Training python (new Updated)

Page 1: Training python (new Updated)

TRAINING PYTHON INTRODUCTION TO PYTHON

(BASIC LEVEL) Editor: Nguyễn Đức Minh Khôi

@HCMC University of Technology, September 2011

Page 2: Training python (new Updated)

TRAINING PYTHON Chapter 0: INTRODUCTION TO PYTHON

9/2/2011 Training Python Chapte 0: Introduction to Python 1

Page 3: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

Python in general (Cont’)

• Applications of python:

9/2/2011 Training Python Chapte 0: Introduction to Python 5

Page 7: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

TRAINING PYTHON CHAPTER 1: TYPES AND OPERATIONS

Page 13: Training python (new Updated)

CONTENTS

Lists

Dictionaries

Tuples

Files

Numeric Typing

Dynamic Typing

Summary

Page 14: Training python (new Updated)

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: Training python (new Updated)

Lists literals and operations

5/22/2011 Training Python 4

Page 16: Training python (new Updated)

Lists literals and operations (cont’)

5/22/2011 Training Python 5

Page 17: Training python (new Updated)

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: Training python (new Updated)

Dictionaries literals and operations

5/22/2011 Training Python 7

Page 19: Training python (new Updated)

Dictionaries literals and operations (c)

5/22/2011 Training Python 8

Page 20: Training python (new Updated)

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: Training python (new Updated)

Tuples literals and operations

5/22/2011 Training Python 10

Page 22: Training python (new Updated)

Tuples literals and operations (con’t)

5/22/2011 Training Python 11

Page 23: Training python (new Updated)

Files – common operations

5/22/2011 Training Python 12

Page 24: Training python (new Updated)

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: Training python (new Updated)

NUMERIC TYPES (Cont’)

3

Page 26: Training python (new Updated)

NUMERIC TYPES (Cont’)

4

Page 27: Training python (new Updated)

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: Training python (new Updated)

Dynamic Typing (Cont’) - Shared references

• Immutable types:

Page 29: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

Summary

• Object just classification

5/22/2011 Training Python 13

Page 32: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

TRAINING PYTHON

STATEMENTS AND SYNTAX

9/2/2011 Learning Python Chapter 2 1

Page 35: Training python (new Updated)

Content

Statements

Assignment, Expression, Print

Conditional statements

Loop statements

Iterations and comprehensions

9/2/2011 Learning Python Chapter 2 2

Page 36: Training python (new Updated)

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: Training python (new Updated)

Python statements

9/2/2011 Learning Python Chapter 2 4

Page 38: Training python (new Updated)

Python statements (Cont’)

9/2/2011 Learning Python Chapter 2 5

Page 39: Training python (new Updated)

Python statements (Cont’)

9/2/2011 Learning Python Chapter 2 6

Page 40: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

Expression Statements

9/2/2011 Learning Python Chapter 2 9

Page 43: Training python (new Updated)

Print Operations

• Call format

• Example:

9/2/2011 Learning Python Chapter 2 10

Page 44: Training python (new Updated)

Conditional Statements - IF

• General Format:

• The if/else ternary expression:

• Example:

9/2/2011 Learning Python Chapter 2 11

Page 45: Training python (new Updated)

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: Training python (new Updated)

IF Statements - Truth tests (opt) (Cont)

• “and” and “or” operands:

9/2/2011 Learning Python Chapter 2 13

Page 47: Training python (new Updated)

Loop Statements – while statements

• General while format:

• Notice:

9/2/2011 Learning Python Chapter 2 14

Page 48: Training python (new Updated)

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: Training python (new Updated)

Loop statements - examples

9/2/2011 Learning Python Chapter 2 16

Page 50: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

9/2/2011 Learning Python Chapter 2 20

Iterators examples (cont’)

Page 54: Training python (new Updated)

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: Training python (new Updated)

TRAINING PYTHON

Chapter 3: FUNCTION

9/6/2011 Training Python Chapter 3 1

Page 56: Training python (new Updated)

CONTENTS

Function Basics

Scope

Arguments

Function Advanced

Iterations and Comprehension Advanced

9/6/2011 Training Python Chapter 3 2

Page 57: Training python (new Updated)

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: Training python (new Updated)

Function Basics – def Statements

• General format:

• Use “def” statements:

9/6/2011 Training Python Chapter 3 4

Page 59: Training python (new Updated)

Function Basics – Examples

9/6/2011 Training Python Chapter 3 5

Page 60: Training python (new Updated)

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: Training python (new Updated)

Scopes – the LEGB rules

9/6/2011 Training Python Chapter 3 7

Page 62: Training python (new Updated)

Scopes – examples

9/6/2011 Training Python Chapter 3 8

Global names: X, func

Local names: Y, Z

# The Built – in Scopes

Page 63: Training python (new Updated)

Scopes – Global statements

• Global Statement:

• Other ways to access Globals:

9/6/2011 Training Python Chapter 3 9

Page 64: Training python (new Updated)

Scopes – Global statements(Cont’)

9/6/2011 Training Python Chapter 3 10

Page 65: Training python (new Updated)

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: Training python (new Updated)

Scopes – Nested scope (Cont’)

• Nested scope and lambda:

9/6/2011 Training Python Chapter 3 12

Page 67: Training python (new Updated)

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: Training python (new Updated)

Scopes – Nonlocal statements (Con’t)

9/6/2011 Training Python Chapter 3 14

Page 69: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

Arguments - Examples

9/6/2011 Training Python Chapter 3 17

Page 72: Training python (new Updated)

Arguments – Examples (Cont’)

9/6/2011 Training Python Chapter 3 18

Page 73: Training python (new Updated)

Arguments – Bonus Points

9/6/2011 Training Python Chapter 3 19

Page 74: Training python (new Updated)

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: Training python (new Updated)

Function Advanced - Recursions • Examples:

• Alternatives:

9/6/2011 Training Python Chapter 3 21

Page 76: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

Iterations and Comprehension Part 2

• List Comprehension: • Vs. Map:

• Vs. filter:

• Vs. Nested for:

9/6/2011 Training Python Chapter 3 24

Page 79: Training python (new Updated)

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: Training python (new Updated)

Iterations and Comprehension Part 2

• Generator Expression:

9/6/2011 Training Python Chapter 3 26

Page 81: Training python (new Updated)

3.0 Comprehension Syntax

9/6/2011 Training Python Chapter 3 27

Page 82: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

TRAINING PYTHON

Chapter 4: MODULES

Page 85: Training python (new Updated)

Contents

Modules Basics

Modules Package

Modules in advance

9/15/2011 Training Python Chapter 4 2

Page 86: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

Modules Basics – reload example

• In changer.py:

• Change global message variable:

9/15/2011 Training Python Chapter 4 10

Page 94: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

Modules in Advance (Cont’)

• The as Extension for import and from:

9/15/2011 Training Python Chapter 4 15

Page 99: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

TRAINING PYTHON

Chapter 5: CLASSES AND OOP

Page 102: Training python (new Updated)

Contents

Class Coding Basics

Class Coding Detail

Advanced Class topics

9/18/2011 Training Python Chapter 5: Classes and OOP 2

Page 103: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

Class Coding Basics ©

• First Example:

9/18/2011 Training Python Chapter 5: Classes and OOP 7

Page 108: Training python (new Updated)

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: Training python (new Updated)

Class Coding Basics – Inheritance © • Second Example:

9/18/2011 Training Python Chapter 5: Classes and OOP 9

Page 110: Training python (new Updated)

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: Training python (new Updated)

Class Coding Details ©

• Method call:

• Example:

9/18/2011 Training Python Chapter 5: Classes and OOP 11

Page 112: Training python (new Updated)

Class Coding Details - Inheritance

• Example:

9/18/2011 Training Python Chapter 5: Classes and OOP 12

Page 113: Training python (new Updated)

Class Coding Details – Inheritance © • Class Interface Techniques:

• Real:

9/18/2011 Training Python Chapter 5: Classes and OOP 13

Page 114: Training python (new Updated)

Class Coding Details – Inheritance ©

9/18/2011 Training Python Chapter 5: Classes and OOP 14

Page 115: Training python (new Updated)

Class Coding Details – Inheritance ©

• Abstract superclass:

9/18/2011 Training Python Chapter 5: Classes and OOP 15

Page 116: Training python (new Updated)

Class Coding Details © • Python namespaces – Assignments Classify names:

9/18/2011 Training Python Chapter 5: Classes and OOP 16

Page 117: Training python (new Updated)

Class Coding Details – operator overloading • Common operator overloading method:

9/18/2011 Training Python Chapter 5: Classes and OOP 17

Page 118: Training python (new Updated)

Class Coding Details – operator overloading ©

9/18/2011 Training Python Chapter 5: Classes and OOP 18

Page 119: Training python (new Updated)

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: Training python (new Updated)

Advanced Class topics – Relationships ©

9/18/2011 Training Python Chapter 5: Classes and OOP 20

In pizzashop.py file

Express: has - relationship

Page 121: Training python (new Updated)

Advanced Class topics – Extending built in types • By embedding:

9/18/2011 Training Python Chapter 5: Classes and OOP 21

Page 122: Training python (new Updated)

Advanced Class topics – Extending built in types

• By subclassing:

9/18/2011 Training Python Chapter 5: Classes and OOP 22

Page 123: Training python (new Updated)

Advanced Class topics –

Diamond Inheritance

• Old and new style inheritance:

9/18/2011 Training Python Chapter 5: Classes and OOP 23

Page 124: Training python (new Updated)

Advanced Class topics –

Diamond Inheritance • Explicit Conflict Resolution:

9/18/2011 Training Python Chapter 5: Classes and OOP 24

Page 125: Training python (new Updated)

Advanced Class topics –

static class method

• Notice:

9/18/2011 Training Python Chapter 5: Classes and OOP 25

Page 126: Training python (new Updated)

Advanced Class topics –

static and class method

9/18/2011 Training Python Chapter 5: Classes and OOP 26

Page 127: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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: Training python (new Updated)

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

Page 131: Training python (new Updated)

TRAINING PYTHON INTRODUCTION TO PYTHON

(BASIC LEVEL) Editor: Nguyễn Đức Minh Khôi

@HCMC University of Technology, September 2011

Page 132: Training python (new Updated)

TRAINING PYTHON Chapter 6: Exception Handling

Page 133: Training python (new Updated)

Contents

Basic Concepts

Exception in Details

Examples

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 3

Page 134: Training python (new Updated)

Basic Concepts

• What is Exceptions: • Are events that can modify the flow of control through a program

• Are triggered automatically on errors, and they can be triggered and intercepted by your code.

• What is Exception Handlers: • Try statement

• Roles of Exceptions: • Error Handling

• Event Notification

• Special case Handling

• Termination Actions

• Unusual control flows

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 4

Page 135: Training python (new Updated)

Basic Concepts (cont.)

• Suppose we have the function like this:

• Default handler:

• Catching Exception:

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 5

Page 136: Training python (new Updated)

Basic Concepts (cont.)

• Raising Exception:

• User define Exception:

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 6

Page 137: Training python (new Updated)

Basic Concepts (cont.)

• Terminate Actions:

• Let’s compare:

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 7

Page 138: Training python (new Updated)

Contents

Basic Concepts

Exception in Details

Examples

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 8

Page 139: Training python (new Updated)

Exception in Details

• Try statement clauses:

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 9

Page 140: Training python (new Updated)

Exception in Details (cont.)

• How it runs? • If an exception does occur while the try block’s statements are running,

Python jumps back to the try and runs the statements under the first except clause that matches the raised exception. Control resumes below the entire try statement after the except block runs (unless the except block raises another exception).

• If an exception happens in the try block and no except clause matches, the exception is propagated up to the last matching try statement that was entered in the program or, if it’s the first such statement, to the top level of the process (in which case Python kills the program and prints a default error message).

• If no exception occurs while the statements under the try header run, Python runs the statements under the else line (if present), and control then resumes below the entire try statement

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 10

Page 141: Training python (new Updated)

Exception in Details (cont.)

• Notices: • Except:

Vs.

• Else:

• Vs.

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 11

Page 142: Training python (new Updated)

Exception in Details (cont.)

• Try/finally statement:

• How it works? • If no exception occurs while the try block is running, Python jumps back

to run the finally block and then continues execution past below the try statement.

• If an exception does occur during the try block’s run, Python still comes back and runs the finally block, but it then propagates the exception up to a higher try or the top-level default handler; the program does not resume execution below the try statement. That is, the finally block is run even if an exception is raised, but unlike an except, the finally does not terminate the exception—it continues being raised after the finally block runs.

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 12

Page 143: Training python (new Updated)

Exception in Details (cont.) • Nested Exception Handlers:

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 13

Page 144: Training python (new Updated)

Exception in Details (cont.)

• The Raise statement

• Example

• Propagating Exception with raise:

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 14

Page 145: Training python (new Updated)

Exception in Details (cont.)

• The Assert Statement

• Example:

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 15

Page 146: Training python (new Updated)

Exception in Details (cont.)

• Your own Exception Class:

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 16

superclass called General and two subclasses called Specific1 and Specific2 Exception is the Superclass Of all Exception Class

Page 147: Training python (new Updated)

Exception in Details

• Python Built in Exception: • You can use directly or inherit

them to your own Exception

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 17

Page 148: Training python (new Updated)

Contents

Basic Concepts

Exception in Details

Examples

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 18

Page 149: Training python (new Updated)

Examples

• The try/finally statement examples: • allows you to specify cleanup actions that always must occur, such as file

closes and server disconnects.

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 19

Page 150: Training python (new Updated)

Examples (cont.) • Unified Try Example:

7/13/2012 Training Python @HCMUT Summer 2012 - Chapter 6 20

Page 151: Training python (new Updated)

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