Python 2000: Beyond The Basics
- Description
- Curriculum
- FAQ
- Reviews
Layered Learning
Never a “one size fits all” approach, our training opportunities are divided into beginner (1000), intermediate (2000), and advanced (3000 – 9000) experience levels. Rather than learning things you might not need to know, you can choose the topics that you are most interested in. Written by a Principal Trainer & Principal Software Development Engineer, in order to insure mastery key topics are presented several times, as well as at ever-increasing depth. No practice, no glory?
Python Programmers Welcome!
Python 2000 is designed for students with a basic understanding of Python. In Python 2000: Beyond the Basics students will focus upon using Python for creating classes, managing packages & paths, creating frameworks, as well as exploring more advanced & modern topics in Modern Python.
Beyond Functional
Students will complete keyword mastery by exploring a large collection of activity-related topics. Students will enjoy learning how to create Lambdas, Generators, Context Managers, Packages & Modules, Classes, Factories, Frameworks, how to manage Exceptions, as well as other professional programming topics.
Training Approach
I have divided all my training into step-by-step modules. Numbered from 1000 to 9000, the numbering system allows us to skip things that we already know to focus upon the things that we do not.
After completing Python 2000 you are ready to next explore a large collection of activity-related topics. Numbered from 3000 – 9000 rather than learning things you might not need to know, you can choose the topics that you are most interested in.
If you are new to programming, then you’ll want to enjoy my free Python Primer.
-
12100: Welcome to Python 2000!Video lesson
Professional Python 3 software developers need to understand Python's complete set of keywords, as well as know how to create first-class, sharable, Python Objects. In Python 2000 therefore, we will cover not only how to create sharable modules and classes, but also delve deeper into how Python's keywords & classes interact with each other within Python's Class & Module Frameworks.
-
22110: Keywords -v- Built-In FunctionsVideo lesson
Let's take a moment to review our coverage of Python keywords, the classic built-ins, as well as use Pythons dir() and help() operations.
-
32120: Input & Error ManagementVideo lesson
Gathering & processing input from humans and other programs can be an important part of any automation activity. Yet while gathering input from other sources is important however, relying upon data from humans or other sources can introduce allot of potential input errors into our applications.
Because outside input can be an amazing resource as well as a major source of error, in these more advanced lessons we should begin to build upon Pythons data-input support, as well as discover how to manage Exceptions. -Much as the moniker implies, in Python – as in other programming languages - Exceptions allow us to manage what we would like to do whenever results are not what we expect.
In this first official lesson in
Python 2000 therefore, we will:-
Learn how to gather user input
-
Learn how to detect and recover from parsing errors
-
Learn how to raise & process an exception
-
Discover how to use try & except
-
-
42130: Input & Error Management (Part II)Video lesson
When managing errors, we obviously do not know how many we might have. With the idea of gathering input therefore, we should be able to loop as many times as needed until get either quit, or get what we need.
In this lesson we will build upon what we have learned so as to be able to:
- Understand how to use 'while' and 'break'
- Discover how to use try, except, and finally
- Learn how to raise an exception
-
52140: Using 'Finally' & 'Else'Video lesson
Expanding Try / Except to use the "finally" and "else" keyword options.
-
62150: Introduction to Classes: Creating Custom Exceptions (Part II)Video lesson
Inheritance is the bedrock of Object Orientation. One great way to appreciate Inheritance is to start re-using Exceptions, as well as to create our own classes.
Python's Exception-management hierarchy is also a very good example of what a good programming Framework is all about. By inheriting from the "Exception" Class, our first official class will be opting-in to an important Python, class-management, strategy.
In this lesson we will begin to create our own classes. While a challenging concept in Python, in order to truly master Python 3 we must be able to create our own classes so as to begin to explore Python's Object Framework, or those “Magic Methods,” later on!
Our goals for this lesson must therefore be to:
Understand how to create classes & class variables
Discover how to use try, except, else and finally
Understand how to use package importation
Discover how to limit package importation
Learn how to create custom exceptions
Understand class initialization
Review how to use 'pass' to create 'stub functions'
-
72160: Importing the “Outside World”Video lesson
Discover the virtues of Python's "pass" keyword, as well as how to use comments to manage an Exception()al learning experience.
-
82170: Inspecting the Python Path (Part I)Video lesson
You write code, I write code, they write code… designed for community support, sharing is truly caring in Python 3!
To enjoy what others have written, as well as to share what we have with others, professional Python Programmers need to understand how to create, as well as to re-use, code from other software developers. In this lesson therefore, we will:
Learn how to use Package importation
Understand how to re-use 3rd party packages & names
Discover how to limit package importation
-
92180: System Paths (Part I)Video lesson
Just like testing assumptions in our code, Python's packing conventions allows us to document & test our modules, as well.
Yet Python Professionals also know how to manage a few of those lesser-known ways to include & exclude modules. By simply managing the locations Python uses to find what our code is looking for, we can even swap-in modules that look the same to our code, yet operate quite differently!
In this lesson, we will:
Learn how to enumerate the system path
Discover how to list loaded modules
Use built-in functions to explore imported information
Discover how to test exception hierarchies
-
102190: System Paths (Part II)Video lesson
Path management, part 2.
-
112200 The Import AliasVideo lesson
Now that we know how to include and exclude packages by managing Python's search path, we should note that Python also allows us to accomplish much the same thing using code.
In this lesson, we will:
- Learn how to avoid name collision in Python
- Understand module documentation
- Discover 'invisible' package initialization
-
122210: Your First Package!Video lesson
While creating amazing things for ourselves is how most choose to use Python, in Python 3 we can allow our creations to integrate so as to seem to be “built into” the Python Programming Environment.
While there are many ways to integrate our code into both Python and Python-related Frameworks, one of the best ways to appreciate how Frameworks operate is to allow our own Modules to be used by the help() subsystem!
In this lesson therefore, the you will:
- Create your own Package
- Review dir()-accessible module listing
- Create help() accessible documentation
- Import and use your own module classes & functions
- Learn how to test your own modules
-
132220: Modules, Scripts & ScopeVideo lesson
Into the list of slightly odd, yet easy-to-understand software security paradigms is Python's unique way of protecting class & package members. In addition to code protection however, is our need to access variables and other objects created by ourselves, as well as by others. -Code & class members that Professional Python Experts will need to create and share between the testable applications & infrastructures that make up our programming worlds.
In this lesson therefore, we must:
- Understand the Global, Local, and Build-in scope
- Discover how to define & modify global and local variables
- Learn how to protect module operations and class members
- Discover how Python's protective “name-mangling” works
-
142230: Modules, Scripts & Scope (Continued)Video lesson
-
152240: Modules, Scripts & Scope (Continued)Video lesson
Understand what a "forward reference" is, as well as the best-practice recommendation.
-
162250: Functions as Objects (Part I)Video lesson
Many old and new Python Professionals alike are surprised to learn that even our function definitions are themselves are typically being bound to a Python Object!
When function are bound to objects, we can of course share them, as well as to add & use functions in some rather surprising places.
In this lesson, we will also:
- Discover how to share data
- Revisit string-formatting operations
- Discover how to avoid %-formatting exceptions
-
172260: Functions as Objects (Part II)Video lesson
-
182270: Managing Global & Local Scope (Part I)Video lesson
Discover how Python keeps track of global and local definitions, as well as some interesting ways to use a class to return a Dictionary.
-
192280: Managing Global & Local Scope (Part II)Video lesson
The solution to the activity, as well as the continuation of Part I.
-
202290: Managing Global & Local Scope (Part II)Video lesson
Updating our class so as to use "the contents of" operation to list the keywords in a returned Dictionary result.
-
212300: More Formatting Opportunities (Part I)Video lesson
Time for a little trivial pursuit…
Having defined “input” and “output” as two of the three (3) major justifications for writing software at-all, we should not be surprised that Python offers so many data-formatting choices. In this lesson we will:
- Revisit string-formatting operations
- Review the entire set of % formatting operations
- Discover how to avoid %-formatting exceptions
-
222310: More Formatting Opportunities (Part II)Video lesson
The solution to our previous activity, as well as the continuation of Part I.
-
232320: Data Formatting ActivityVideo lesson
After having taken a closer look at Python's function-passing & data-formatting opportunities, we can both apply as well as expand what we are learning so as to make life a little easier… as well as a tad more “Pythonic!”
Our goals for this lesson will be to format a dictionary for string, floating point, integer, and field-justified reporting.
-
242330: Conditional Testing (Part I)Video lesson
Practice makes perfect … Python 'Pros!
In this session we can:
Practice using and / or / not
Learn how to read blocks of Boolean values
-
252340: Conditional Testing (Part II)Video lesson
Using elif, as well as the official activity.
-
262350: Managing Dictionaries - SortingVideo lesson
Learn how to anticipate dictionary ordering
Discover how to create & use a custom sort routine
Use the 'sorted' keyword to process several collection types
-
272360: Python's Official String FormatterVideo lesson
Having covered Python's classic string-formatting operations, string's more recent ".format" member function offers far better formatting capabilities, as well as many backward-compatible type & format identifiers.
-
282370: Getting Classy: Readng Data Behind-The ScenesVideo lesson
Discover the default object, as well as how class members can do allot of things for us, behind-the-scenes!
From object-creation to type conversion, creating classes in Python 3 requires us to delve deeper into what takes place whenever classes are defined. By understanding when reserved function definitions are helpful as well as how each operate, we are in reality learning more about the “magic methods” most often understood by Python experts.
In this lesson, we will:
Learn how to create your own classes
Discover how to protect class member functions
Review class initialization logic
Learn how to create & recognize "static" member functions
Discover how to overload mathematical, as well as other operators in Python
-
292380: Getting Classy: Keyword Initialization ParametersVideo lesson
From object construction & named parameters, to the member & associative functions themselves, adding data to our classes can take place in several ways.
-
302390: Getting Classy: Dual Initialization / Object Factory SolutionVideo lesson
Review a solution to the activity that uses three (3) different ways to provide data to our class.
-
312400: More "Meta Methods" (Part I)Video lesson
The number of meta methods in play in our object at any moment depends upon object re-use, as well as our own function definitions. While our goal is to understand a mere handful of the most commonly overridden function definitions, there are dozens of Framework opportunities to manage mathematical, type conversions, as well as other keyword-related operations.
In this lesson series, we will:
Learn more about the scope of Python's "magic methods”
Discover how __new_ and __del__ can change object initialization
Create an application that can toggle object creation strategies
Discover how keyword & operator usages can be intercepted Learn how to manage Python's per-class framework
Review self-initialization best practices
Discover how to explicitly manage class member visibility
Learn how to locate protected member-functions in other modules
-
322410: More Meta Methods, (Part II)Video lesson
Review a solution to the previous activity that demonstrates yet another re-use best-practice.
-
332420: Case Study: Object Creation & DeletionVideo lesson
The way that we choose to create & manage our objects can dramatically influence how subsequent operations are applied. From being ignored to simply being used every time, in this lesson we will document some unexpected ways object creation can affect objection retirement.
Our mission in this lesson will be to:
-
Learn more about the scope of Python's “magic methods”
-
Discover how __new_ and __del__ can change object initialization
-
Create an application that can toggle object creation strategies
-
-
342430: Case Study (Part II)Video lesson
Discover how the operation of our class can change merely by adding the __new__ meta method.
-
352440: Pythonic Content ManagementVideo lesson
When it comes time to swap-out content on-demand, very few programming languages can compete with Python's “Content Managers.”
Activated via keyword, in this lesson we will delve deep into the realm where very few new software developers find the need to go. Yet not matter if we use content managers frequently or not-at-all, students should be very interested in knowing what content managers do, as well as how to create them.
In this lesson we will:
-
Learn how to dynamically manage object content
-
Discover how to use "with" to manage meta-methods
-
Learn how content managers are used in the real world
-
Create & test your own Content Manager
-
-
362450: Lambdas - Lambs A & BVideo lesson
Don't be too intimidated by the term “Lambda.” -If you are like most new software developers, you've probably never heard the term before!
But understanding what is meant by “headless functions” is not only important, but can be key to impressing others with your comprehensive mastery of the Python language!
Learn more about passing functions as parameters
Learn how Lambda can be used to sort, select, and manage operations
Learn how to pass multiple parameters to a Lambda functions
-
372460: Anonymous LambdaVideo lesson
While Python allows us to name our Lambdas, the most anticipated usage is 'anonymous.'
-
382470: Re-Defining Built-in Functions & Faster String-Formatting OperationsVideo lesson
In Python, even function definitions can be changed. Replacing a built-in function with an instance of a string, let's discover how we can press on so as to use String's member functions to accomplish string-formatting operations ... without using formatting expressions.
-
392480: Characters, Numbers, Bits & Bytes (Part I)Video lesson
Accessing & managing binary patterns is a necessary part of device control & robotics. Because deciphering and constructing might be very important for many Python Professionals, int this lesson we will:
Review low-level / bit representational concepts
Learn how to convert binary formats to classical string representations
Create a program to display hexadecimal, octal, binary and decimal formats
Use Python's int() function to convert between the most popular, integral, string-representations
-
402490: Characters, Numbers, Bits & Bytes (Part II)Video lesson
From encoding "white space" to "special characters," modern Python can utilize far more than the classic set of character values.
Discover more about big-endian & little-endian formats
Learn how to "dump" data using bytearray()
-
412500: Reporting, Columns, and ASCII Values (Part I)Video lesson
The good news in Python 3 is that the default character type is now large enough to support different national languages. Because the need to support classical 8-but characters remains extremely important however, students should be comfortable with understanding not only what ASCII is, but also in creating classic, ASCII-encoded reports.
In this module we will continue our deep-dive into the bits any bytes of Python 3 by:
-
Learning how to use range() to enumerate arbitrary table sizes
-
Learn more about printable ASCII characters
-
Use keywords to create elegant column-formatted reports
-
Create your own ASCII Table generator
-
-
422510: Reporting, Columns, and ASCII Values (Part II)Video lesson
-
432520: Reporting, Columns, and ASCII Values (Part III)Video lesson
-
442530: Loop-Management: Keywords, Concepts for Data-Crunching (Part I)Video lesson
Sometimes the definition of “number crunching” involves the use of a never-ending process. When in comes time to plow through possibly never-ending collections of data and / or operations therefore, we need to review a Python construct & keywords that will allow us to carry-on through a seemingly innumerable number of iterations.
In this module we will:
-
Discover how to use 'continue' and 'break'
-
Learn how to use an “infinite loop”
-
Learn how to manage independent variable loop-control
-
-
452540: Loop-Management: Keywords, Concepts for Data-Crunching (Part II)Video lesson
-
462550: Object Identificaiton & AddressVideo lesson
In-memory locations are traditionally specified in a common hexadecimal format. While the default address of objects in memory can never be assumed in Python 3, students should become familiar with how objects can be uniquely identified in Python.
In order to become more familiar with object-identification in Python 3, in this session we will:
-
Learn how the id() built-in operates
-
Discover how to locate the address of an object in CPython
-
Learn how to understand the distance between address in CPython
-
Understand how variables & collections manage object references
-
Learn how to reference dis-associated & orphaned data reverences
-
-
472560: Understanding “Shallow” & “Deep” OperationsVideo lesson
Into the realm of professional terms arrives our need to understand the difference between “shallow” and “deep” operations. While the names might appear obvious to many, the need to understand how to track the absolute identity of any object we are sharing is an important technique to master.
By way of becoming familiar with shallow, deep, as well as positively identifiable object locations therefore, in this lesson we will:
Understand when to use a “shallow copy”
Compete the official activity for using id()
Understand when to use a “deep copy”
Discover how a collection's “shallow copy” can be updated
Learn how to protect mutable data collections from unexpected changes
-
482570: Tagging & Combining Parameters (Part I)Video lesson
• Discover how to write a function combined data into a unary / tuple parameter
• Discover how to write a function that can combine references into a dictionary
• Learn how to write code that can work with either a tuple or a dictionary -
492580: Tagging & Combining Parameters (Part 2)Video lesson
-
502590: Verifying & Managing AssumptionsVideo lesson
When writing in Python – as well as other languages – the need to define a “null,” or empty value can be extremely important.
In addition to having a way to define nothing, or “none” in Python, the language also provides a way to manage what we assume certain values are.
In this lesson, we will:
-
Learn where and when to use the “None” keyword
-
Discover how assert() can be used to maintain software integrity
-
Create, reference, & overload class variable names
-
-
512600: The "IsA" and "HasA" RelationshipsVideo lesson
Professional software developers share a common anthology of terms & concepts. No matter if we are writing Python, C#, C/C++ or Java, understand what Object-Orientated software developer mean by “isa” and “hasa” is a very important topic to become familiar with!
In this lesson we shall:
-
Learn how to compare built-in types
-
Discover how to custom object parentage
-
Learn the difference between “isa” and “hasa”
-
-
522610: Object Relationships (continued)Video lesson
-
532620: Object Relationships (continued)Video lesson
-
542630: Object Relationships (continued)Video lesson
-
552640: Instance Detection (Part I)Video lesson
-
562650: Instance Detection (Part II)Video lesson
-
572660: Metaclass DetectionVideo lesson
-
582670: Has-A, Part IVideo lesson
-
592680: Has-A, Part IIVideo lesson
-
602690: Totally Amazing Generators! (Part I)Video lesson
One of the most difficult concepts to understand is also key to understanding how Python operates in-action. Known as “Generators,” mastering the use of one final keyword is required to rocket our understanding of Python into the realm of professional topic mastery.
In this lesson we will:
-
Learn how to use the yield keyword to halt & resume operations
-
Create your own generator
-
-
612700: Totally Amazing Generators! (Part II)Video lesson
-
622710: Uber Python: Filtering & ComprehensionsVideo lesson
We'll see many strange looking lists created by a process known as "Comprehension." While mastering "List Comprehensions" is important, another secret is that we can use the same comprehension process to triage & filter data into sets, dictionaries, and other collection types!
-
632711: Collection & Data PatternsVideo lesson
From the “scripting” commons to named class creations, the pinnacle of 'pythonisms is how even unrelated types often operate much the same.
Yet while many "sequence types" interoperate well, dictionary, tuples, and sets have each their own unique idioms to be aware of.

External Links May Contain Affiliate Links read more