Links added. TOC
This commit is contained in:
@@ -1,11 +1,17 @@
|
|||||||
# Overview
|
# 3. Program Organization
|
||||||
|
|
||||||
In this section you will learn:
|
So far, we've learned some Python basics and have written some short scripts.
|
||||||
|
However, as you start to write larger programs, you'll want to get organized.
|
||||||
|
This section dives into greater details on writing functions, handling errors,
|
||||||
|
and introduces modules. By the end you should be able to write programs
|
||||||
|
that are subdivided into functions across multiple files. We'll also give
|
||||||
|
some useful code templates for writing more useful scripts.
|
||||||
|
|
||||||
* How to organize larger programs.
|
* [3.1 Functions and Script Writing](01_Script)
|
||||||
* Defining and working with functions.
|
* [3.2 More Detail on Functions](02_More_functions)
|
||||||
* Exceptions and Error handling.
|
* [3.3 Exception Handling](03_Error_checking)
|
||||||
* Basic module management.
|
* [3.4 Modules](04_Modules)
|
||||||
* Script writing.
|
* [3.5 Main module](05_Main_module)
|
||||||
|
* [3.6 Design Discussion about Embracing Flexibilty](06_Design_discussion)
|
||||||
|
|
||||||
Python is great for short scripts, one-off problems, prototyping, testing, etc.
|
[Contents](../Contents)
|
||||||
|
|||||||
@@ -1,35 +1,16 @@
|
|||||||
# Overview
|
# 4. Classes and Objects
|
||||||
|
|
||||||
## Object Oriented (OO) programming
|
So far, our programs have only used built-in Python datatypes. In
|
||||||
|
this section, we introduce the concept of classes and objects. You'll
|
||||||
|
learn about the `class` statement that allows you to make new objects.
|
||||||
|
We'll also introduce the concept of inheritance, a tool that is commonly
|
||||||
|
use to build extensible programs. Finally, we'll look at a few other
|
||||||
|
features of classes including special methods, dynamic attribute lookup,
|
||||||
|
and defining new exceptions.
|
||||||
|
|
||||||
A Programming technique where code is organized as a collection of *objects*.
|
* [4.1 Introducing Classes](01_Class)
|
||||||
|
* [4.2 Inheritance](02_Inheritance)
|
||||||
|
* [4.3 Special Methods](03_Special_methods)
|
||||||
|
* [4.4 Defining new Exception](04_Defining_exceptions)
|
||||||
|
|
||||||
An *object* consists of:
|
[Contents](../Contents)
|
||||||
|
|
||||||
* Data. Attributes
|
|
||||||
* Behavior. Methods, functions applied to the object.
|
|
||||||
|
|
||||||
You have already been using some OO during this course.
|
|
||||||
|
|
||||||
For example with Lists.
|
|
||||||
|
|
||||||
```python
|
|
||||||
>>> nums = [1, 2, 3]
|
|
||||||
>>> nums.append(4) # Method
|
|
||||||
>>> nums.insert(1,10) # Method
|
|
||||||
>>> nums
|
|
||||||
[1, 10, 2, 3, 4] # Data
|
|
||||||
>>>
|
|
||||||
```
|
|
||||||
|
|
||||||
`nums` is an *instance* of a list.
|
|
||||||
|
|
||||||
Methods (`append` and `insert`) are attached to the instance (`nums`).
|
|
||||||
|
|
||||||
## Summary
|
|
||||||
|
|
||||||
This will be a high-level overview of classes.
|
|
||||||
|
|
||||||
Most code involving classes will involve the topics covered in this section.
|
|
||||||
|
|
||||||
If you're merely using existing libraries, the code is typically fairly simple.
|
|
||||||
@@ -1,5 +1,31 @@
|
|||||||
# 4.1 Classes
|
# 4.1 Classes
|
||||||
|
|
||||||
|
### Object Oriented (OO) programming
|
||||||
|
|
||||||
|
A Programming technique where code is organized as a collection of *objects*.
|
||||||
|
|
||||||
|
An *object* consists of:
|
||||||
|
|
||||||
|
* Data. Attributes
|
||||||
|
* Behavior. Methods, functions applied to the object.
|
||||||
|
|
||||||
|
You have already been using some OO during this course.
|
||||||
|
|
||||||
|
For example with Lists.
|
||||||
|
|
||||||
|
```python
|
||||||
|
>>> nums = [1, 2, 3]
|
||||||
|
>>> nums.append(4) # Method
|
||||||
|
>>> nums.insert(1,10) # Method
|
||||||
|
>>> nums
|
||||||
|
[1, 10, 2, 3, 4] # Data
|
||||||
|
>>>
|
||||||
|
```
|
||||||
|
|
||||||
|
`nums` is an *instance* of a list.
|
||||||
|
|
||||||
|
Methods (`append` and `insert`) are attached to the instance (`nums`).
|
||||||
|
|
||||||
### The `class` statement
|
### The `class` statement
|
||||||
|
|
||||||
Use the `class` statement to define a new object.
|
Use the `class` statement to define a new object.
|
||||||
|
|||||||
@@ -1,11 +1,20 @@
|
|||||||
# Overview
|
# 5. Inner Workings of Python Objects
|
||||||
|
|
||||||
The inner workings of Python Objects.
|
This section covers some of the inner workings of Python objects.
|
||||||
|
Programmers coming from other programming languages often find
|
||||||
|
Python's notion of classes lacking in features. For example, there is
|
||||||
|
no notion of access-control (e.g., private, protected), the whole
|
||||||
|
`self` argument feels weird, and frankly, working with objects
|
||||||
|
sometimes feel like a "free for all." Maybe that's true, but we'll
|
||||||
|
find out how it all works as well as some common programming idioms to
|
||||||
|
better encapsulate the internals of objects.
|
||||||
|
|
||||||
In this section we will cover:
|
It's not necessary to worry about the inner details to be productive.
|
||||||
|
However, most Python coders have a basic awareness of how classes
|
||||||
|
work. So, that's why we're covering it.
|
||||||
|
|
||||||
* A few more details about how objects work.
|
* [5.1 Dictionaries Revisited (Object Implementation)](01_Dicts_revisited)
|
||||||
* How objects are represented.
|
* [5.2 Encapsulation Techniques](02_Classes_encapsulation)
|
||||||
* Details of attribute access.
|
|
||||||
* Data encapsulation techniques.
|
[Contents](../Contents)
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
# Overview
|
# 6. Generators
|
||||||
|
|
||||||
A simple definition of *Iteration*: Looping over items.
|
Iteration (the `for`-loop) is one of the most common programming
|
||||||
|
patterns in Python. Programs do a lot of iteration to process lists,
|
||||||
|
read files, query databases, and more. One of the most powerful
|
||||||
|
features of Python is the ability to customize and redefine iteration
|
||||||
|
in the form of a so-called "generator function." This section
|
||||||
|
introduces this topic. By the end, you'll write some programs that
|
||||||
|
process some real-time streaming data in an interesting way.
|
||||||
|
|
||||||
```python
|
* [6.1 Iteration Protocol](01_Iteration_protocol)
|
||||||
a = [2,4,10,37,62]
|
* [6.2 Customizing Iteration with Generators](02_Customizing_iteration)
|
||||||
# Iterate over a
|
* [6.3 Producer/Consumer Problems and Workflows](03_Producers_consumers)
|
||||||
for x in a:
|
* [6.4 Generator Expressions](04_More_generators)
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
This is a very common pattern. Loops, list comprehensions, etc.
|
[Contents](../Contents)
|
||||||
|
|
||||||
Most programs do a huge amount of iteration.
|
|
||||||
|
|||||||
@@ -1,9 +1,19 @@
|
|||||||
# Overview
|
# 7. Advanced Topics
|
||||||
|
|
||||||
In this section we will take a look at more Python features you may encounter.
|
In this section, we look at a small set of somewhat more advanced
|
||||||
|
Python features that you might encounter in your day-to-day coding.
|
||||||
|
Many of these topics could have been covered in earlier course
|
||||||
|
sections, but weren't in order to spare you further head-explosion at
|
||||||
|
the time.
|
||||||
|
|
||||||
* Variable argument functions
|
It should be emphasized that the topics in this section are only meant
|
||||||
* Anonymous functions and lambda
|
to serve as a very basic introduction to these ideas. You will need
|
||||||
* Returning function and closures
|
to seek more advanced material to fill out details.
|
||||||
* Function decorators
|
|
||||||
* Static and class methods
|
* [7.1 Variable argument functions](01_Variable_arguments)
|
||||||
|
* [7.2 Anonymous functions and lambda](02_Anonymous_function)
|
||||||
|
* [7.3 Returning function and closures](03_Retuning_functions)
|
||||||
|
* [7.4 Function decorators](04_Function_decorators)
|
||||||
|
* [7.5 Static and class methods](05_Decorated_methods)
|
||||||
|
|
||||||
|
[Contents](../Contents)
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
# Overview
|
# 8. Overview
|
||||||
|
|
||||||
In this section we will cover the basics of:
|
This section introduces a few basic topics related to testing,
|
||||||
|
logging, and debugging.
|
||||||
|
|
||||||
* Testing
|
* [8.1 Testing](01_Testing)
|
||||||
* Logging, error handling and diagnostics
|
* [8.2 Logging, error handling and diagnostics](02_Logging)
|
||||||
* Debugging
|
* [8.3 Debugging](03_Debugging)
|
||||||
|
|
||||||
|
[Contents](../Contents)
|
||||||
|
|
||||||
Using Python.
|
|
||||||
|
|||||||
@@ -1,7 +1,17 @@
|
|||||||
# Overview
|
# 9 Packages
|
||||||
|
|
||||||
In this section we will cover more details on:
|
We conclude the course with a few details on how to organize your code
|
||||||
|
into a package structure. We'll also discuss the installation of
|
||||||
|
third party packages and preparing to give your own code away to others.
|
||||||
|
|
||||||
* Packages.
|
The subject of packaging is an ever-evolving, overly complex part of
|
||||||
* Third Party Modules.
|
Python development. Rather than focus on specific tools, the main
|
||||||
* How to structure an application.
|
focus of this section is on some general code organization principles
|
||||||
|
that will prove useful no matter what tools you later use to give code
|
||||||
|
away or manage dependencies.
|
||||||
|
|
||||||
|
* [9.1 Packages](01_Packages)
|
||||||
|
* [9.2 Third Party Modules](02_Third_party)
|
||||||
|
* [9.3 Giving your code to others](03_Distribution)
|
||||||
|
|
||||||
|
[Contents](../Contents)
|
||||||
|
|||||||
@@ -1,3 +1,78 @@
|
|||||||
# Table of Contents
|
# Practical Python Programming
|
||||||
|
|
||||||
|
## [1. Introduction to Python](01_Introduction/00_Overview)
|
||||||
|
|
||||||
|
* [1.1 Introducing Python](01_Introduction/01_Python)
|
||||||
|
* [1.2 A First Program](01_Introduction/02_Hello_world)
|
||||||
|
* [1.3 Numbers](01_Introduction/03_Numbers)
|
||||||
|
* [1.4 Strings](01_Introduction/04_Strings)
|
||||||
|
* [1.5 Lists](01_Introduction/05_Lists)
|
||||||
|
* [1.6 Files](01_Introduction/06_Files)
|
||||||
|
* [1.7 Functions](01_Introduction/07_Functions)
|
||||||
|
|
||||||
|
## [2. Working with Data](02_Working_with_data/00_Overview)
|
||||||
|
|
||||||
|
* [2.1 Datatypes and Data Structures](02_Working_with_data/01_Datatypes)
|
||||||
|
* [2.2 Containers](02_Working_with_data/02_Containers)
|
||||||
|
* [2.3 Formatted Output](02_Working_with_data/03_Formatting)
|
||||||
|
* [2.4 Sequences](02_Working_with_data/04_Sequences)
|
||||||
|
* [2.5 Collections module](02_Working_with_data/05_Collections)
|
||||||
|
* [2.6 List comprehensions](02_Working_with_data/06_List_comprehension)
|
||||||
|
* [2.7 Object model](02_Working_with_data/07_Objects)
|
||||||
|
|
||||||
|
## [3. Program Organization)(03_Program_organization/00_Overview)
|
||||||
|
|
||||||
|
* [3.1 Functions and Script Writing](03_Program_organization/01_Script)
|
||||||
|
* [3.2 More Detail on Functions](03_Program_organization/02_More_functions)
|
||||||
|
* [3.3 Exception Handling](03_Program_organization/03_Error_checking)
|
||||||
|
* [3.4 Modules](03_Program_organization/04_Modules)
|
||||||
|
* [3.5 Main module](03_Program_organization/05_Main_module)
|
||||||
|
* [3.6 Design Discussion about Embracing Flexibilty](03_Program_organization/06_Design_discussion)
|
||||||
|
|
||||||
|
## [4. Classes and Objects)(04_Classes_objects/00_Overview)
|
||||||
|
|
||||||
|
* [4.1 Introducing Classes](04_Classes_objects/01_Class)
|
||||||
|
* [4.2 Inheritance](04_Classes_objects/02_Inheritance)
|
||||||
|
* [4.3 Special Methods](04_Classes_objects/03_Special_methods)
|
||||||
|
* [4.4 Defining new Exception](04_Classes_objects/04_Defining_exceptions)
|
||||||
|
|
||||||
|
## [5. The Inner Workings of Python Objects)(05_Object_model/00_Overview)
|
||||||
|
|
||||||
|
* [5.1 Dictionaries Revisited (Object Implementation)](05_Object_model/01_Dicts_revisited)
|
||||||
|
* [5.2 Encapsulation Techniques](05_Object_model/02_Classes_encapsulation)
|
||||||
|
|
||||||
|
## [6. Generators](06_Generators/00_Overview)
|
||||||
|
|
||||||
|
* [6.1 Iteration Protocol](06_Generators/01_Iteration_protocol)
|
||||||
|
* [6.2 Customizing Iteration with Generators](06_Generators/02_Customizing_iteration)
|
||||||
|
* [6.3 Producer/Consumer Problems and Workflows](06_Generators/03_Producers_consumers)
|
||||||
|
* [6.4 Generator Expressions](06_Generators/04_More_generators)
|
||||||
|
|
||||||
|
## [7. A Few Advanced Topics](07_Advanced_Topics/00_Overview)
|
||||||
|
|
||||||
|
* [7.1 Variable argument functions](07_Advanced_Topics/01_Variable_arguments)
|
||||||
|
* [7.2 Anonymous functions and lambda](07_Advanced_Topics/02_Anonymous_function)
|
||||||
|
* [7.3 Returning function and closures](07_Advanced_Topics/03_Retuning_functions)
|
||||||
|
* [7.4 Function decorators](07_Advanced_Topics/04_Function_decorators)
|
||||||
|
* [7.5 Static and class methods](07_Advanced_Topics/05_Decorated_methods)
|
||||||
|
|
||||||
|
## [8. Testing, Logging, and Debugging](08_Testing_debugging/00_Overview)
|
||||||
|
|
||||||
|
* [8.1 Testing](08_Testing_debugging/01_Testing)
|
||||||
|
* [8.2 Logging, error handling and diagnostics](08_Testing_debugging/02_Logging)
|
||||||
|
* [8.3 Debugging](08_Testing_debugging/03_Debugging)
|
||||||
|
|
||||||
|
## [9. Packages](09_Packages/00_Overview)
|
||||||
|
|
||||||
|
* [9.1 Packages](09_Packages/01_Packages)
|
||||||
|
* [9.2 Third Party Modules](09_Packages/02_Third_party)
|
||||||
|
* [9.3 Giving your code to others](09_Packages/03_Distribution)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
This is contents
|
|
||||||
|
|||||||
Reference in New Issue
Block a user