Python Fundamentals by Wesley J Chun (LiveLessons) review by Ross ParletteWesley also wrote Core Python Programming (Prentice Hall), which is not required for this course, but could be used for additional resources as you progress. He occasionally refers to Core Python Programming.

Introduction (Lesson 1) is mercifully short but covers necessary items, such as whether you need to install it, how to access Python, using an Integrated Development Environment (such as IDLE), how to create, edit, and run/test Python source, and finally, run the universal ´Hello World!¡ program.

Getting Started (Lesson 2) covers the origin and philosophy of Python, and continues with elementary language features. He continues with the Python 2.x to 3.x transition plan, tools, and some significant differences. Finally, there is a demo of a variety of data types, operations, and statements.

Syntax Basics (Lesson 3) introduces the structure of a Python program / module, variable naming, and calling functions. He shows how to get basic user input, so that simple interactive programs may be developed.

Standard Types (Lesson 4) at 2+ hours is VERY long. It covers all of the Standard Types and the most frequently used methods for those types. There are several varieties of numbers (including Boolean), strings, lists, tuples, dictionaries, and sets (regular and frozen). Also covered are list comprehensions and generator expressions and the operators appropriate to the various types. Examples are shown in IDLE.

Objects and Memory Model (Lesson 5) describes how Python handles memory and discusses several categorizations of the Standard Types. The purpose is to allow you to write more efficient programs. Everything in Python is an object and we access them with references. Danger, Will Robinson! Avoid reference cycles, since they can cause memory leaks. Copying an object, that's deep, man (and why). There are several quizzes, which the student may run in IDLE while the lesson is paused.

Loops and Conditionals (Lesson 6) deals with how you put structure into a program. Conditional statements are presented as well as the relatively new ternary operator (conditional expression). For loops, both types (for and while) are introduced as well as their relationship to iterators / generators and helper functions and statements. The use of "else" ending a loop is demonstrated. There are a couple of flubs in this lesson. This is the last chapter with live (i.e. IDLE) examples shown.

Files and Input / Output (Lesson 7) describes the standard (in, out, and err = error) files, disk files and things which are treated (in many ways) enough like disk files to make the abstraction useful. You can open a file, close it, read it, or write or append to it. There are also executable methods and data attributes for files. While simple disk files are a common example of persistent storage, other examples are pickled files, DBM files, shelve files, and RDBMS.

Errors and Exceptions (Lesson 8) concerns itself with things which we all believe will never happen to us. But in the extremely unlikely event one MIGHT, it's good to be prepared. Exceptions can be raised or thrown, caught, and handled. Or, as in Perl, you could die. In Python, you can "try" to catch an exception. There aren't a lot of exception you'll likely encounter and he lists and describes them. The workbook also has a listing. An else clause can be appended to a try except pair or group. An application can also raise (or throw) an exception, either a standard one or a newly created one.

Functions (Lesson 9) delves more deeply into functions, which were briefly show in some earlier lessons. It also introduces those features of functional programming which have been made a part of Python. Functions may have a documentation string. Arguments can be positional, passed by keywords, grouped, and have default values. Mutable arguments are call by reference; immutable arguments are, in effect, call by value. Functions always return a single value, even if it doesn't look like it. He showed some subtle effects of scope and namespaces. Some of the Functional Programming features are introduced, such as map, filter, reduce, and apply. Except for lambda (Anonymous Functions), no examples of usage are shown. No in situ examples of lambda (as in callbacks) are shown, however, so the actual usage is not demonstrated. There was a quiz but no live (IDLE) demo.

Advanced function topics not covered are Decorators, Inner Functions, Closures, Recursion, Currying and Partial Function Application, and Generators, for which the student is referred to Core Python Programming.

Object-Oriented Programming (Lesson 10) discusses everything you need to know to do OOP in Python. Wesley also reminds you that although everything in Python is an object, using them to do OOP is entirely optional. OOP is the next step after (and enhancement of) Structured & Procedural Programming. It relates the code and the data more closely than SPP. It also encourages code re-use, even with modification, through subclassing. Classes are the blueprints for instances, a process called instantiation. Methods are bound to the instances but sometimes unbound methods may also be needed. Instances can have attributes unique to that instance. Overriding class attributes is possible but sometimes confusing. Methods are funtions defined within the class which work on the data associated with the class.

Advanced OOP topics not covered (but in Core Python, Chapter 13) are Emulating native Python types, Delegation, Static methods, Class methods, Slots, Properties, Descriptors, and I never metaclass I didn't like.

There are exercises in the workbook for all the chapters.

This is not a standard video DVD. It runs a proprietary program (livelessons.exe) which precludes Linux users and probably Mac users as well. (I have not tried an emulator, like WINE.) For tutorial on a multi-platform language like Python, this is unexpected.

I had difficulty with the stability of OOo (3.1) Writer as well as Windows WordPad while running the lessons, so I took notes in Notepad instead and rebooted after each livelessons session. That may have been overkill, but loosing my entire document several times seemed to warrant it. I am running XP on an older Compaq tower with 4 GB RAM.

LiveLessons and Prentice Hall (Wesley's Core Python publisher) are both owned by Pearson Education, which also owns Addison Wesley, Que, Sams, and many other imprints. I had not realized that technical and educational book publishing was this consolidated.