Fix broken links
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (1.6 Files)](../01_Introduction/06_Files.md) \| [Next (2.2 Containers)](02_Containers)
|
[Contents](../Contents.md) \| [Previous (1.6 Files)](../01_Introduction/06_Files.md) \| [Next (2.2 Containers)](02_Containers.md)
|
||||||
|
|
||||||
# 2.1 Datatypes and Data structures
|
# 2.1 Datatypes and Data structures
|
||||||
|
|
||||||
@@ -446,4 +446,4 @@ dict_items([('name', 'AA'), ('shares', 75), ('price', 32.2), ('date', (6, 11, 20
|
|||||||
>>>
|
>>>
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (1.6 Files)](../01_Introduction/06_Files.md) \| [Next (2.2 Containers)](02_Containers)
|
[Contents](../Contents.md) \| [Previous (1.6 Files)](../01_Introduction/06_Files.md) \| [Next (2.2 Containers)](02_Containers.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (2.1 Datatypes)](01_Datatypes) \| [Next (2.3 Formatting)](03_Formatting)
|
[Contents](../Contents.md) \| [Previous (2.1 Datatypes)](01_Datatypes.md) \| [Next (2.3 Formatting)](03_Formatting.md)
|
||||||
|
|
||||||
# 2.2 Containers
|
# 2.2 Containers
|
||||||
|
|
||||||
@@ -442,5 +442,4 @@ should take the list of stocks in Exercise 2.5 and the dictionary of
|
|||||||
prices in Exercise 2.6 and computes the current value of the portfolio
|
prices in Exercise 2.6 and computes the current value of the portfolio
|
||||||
along with the gain/loss.
|
along with the gain/loss.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (2.1 Datatypes)](01_Datatypes) \| [Next (2.3 Formatting)](03_Formatting)
|
[Contents](../Contents.md) \| [Previous (2.1 Datatypes)](01_Datatypes.md) \| [Next (2.3 Formatting)](03_Formatting.md)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (2.2 Containers)](02_Containers) \| [Next (2.4 Sequences)](04_Sequences)
|
[Contents](../Contents.md) \| [Previous (2.2 Containers)](02_Containers.md) \| [Next (2.4 Sequences)](04_Sequences.md)
|
||||||
|
|
||||||
# 2.3 Formatting
|
# 2.3 Formatting
|
||||||
|
|
||||||
@@ -299,4 +299,4 @@ How would you modify your code so that the price includes the currency symbol ($
|
|||||||
IBM 100 $106.28 35.84
|
IBM 100 $106.28 35.84
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (2.2 Containers)](02_Containers) \| [Next (2.4 Sequences)](04_Sequences)
|
[Contents](../Contents.md) \| [Previous (2.2 Containers)](02_Containers.md) \| [Next (2.4 Sequences)](04_Sequences.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (2.3 Formatting)](03_Formatting) \| [Next (2.5 Collections)](05_Collections)
|
[Contents](../Contents.md) \| [Previous (2.3 Formatting)](03_Formatting.md) \| [Next (2.5 Collections)](05_Collections.md)
|
||||||
|
|
||||||
# 2.4 Sequences
|
# 2.4 Sequences
|
||||||
|
|
||||||
@@ -546,4 +546,4 @@ Also, be aware that `zip()` stops once the shortest input sequence is exhausted.
|
|||||||
>>>
|
>>>
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (2.3 Formatting)](03_Formatting) \| [Next (2.5 Collections)](05_Collections)
|
[Contents](../Contents.md) \| [Previous (2.3 Formatting)](03_Formatting.md) \| [Next (2.5 Collections)](05_Collections.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (2.4 Sequences)](04_Sequences) \| [Next (2.6 List Comprehensions)](06_List_comprehension)
|
[Contents](../Contents.md) \| [Previous (2.4 Sequences)](04_Sequences.md) \| [Next (2.6 List Comprehensions)](06_List_comprehension.md)
|
||||||
|
|
||||||
# 2.5 collections module
|
# 2.5 collections module
|
||||||
|
|
||||||
@@ -168,4 +168,4 @@ in all of Python. In fact, we could do an extended tutorial on just
|
|||||||
that. However, doing so now would also be a distraction. For now,
|
that. However, doing so now would also be a distraction. For now,
|
||||||
put `collections` on your list of bedtime reading for later.
|
put `collections` on your list of bedtime reading for later.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (2.4 Sequences)](04_Sequences) \| [Next (2.6 List Comprehensions)](06_List_comprehension)
|
[Contents](../Contents.md) \| [Previous (2.4 Sequences)](04_Sequences.md) \| [Next (2.6 List Comprehensions)](06_List_comprehension.md)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (2.5 Collections)](05_Collections) \| [Next (2.7 Object Model)](07_Objects)
|
[Contents](../Contents.md) \| [Previous (2.5 Collections)](05_Collections.md) \| [Next (2.7 Object Model)](07_Objects.md)
|
||||||
|
|
||||||
# 2.6 List Comprehensions
|
# 2.6 List Comprehensions
|
||||||
|
|
||||||
@@ -326,4 +326,4 @@ extraction, and so forth. Becoming a guru master of list
|
|||||||
comprehensions can substantially reduce the time spent devising a
|
comprehensions can substantially reduce the time spent devising a
|
||||||
solution. Also, don't forget about the `collections` module.
|
solution. Also, don't forget about the `collections` module.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (2.5 Collections)](05_Collections) \| [Next (2.7 Object Model)](07_Objects)
|
[Contents](../Contents.md) \| [Previous (2.5 Collections)](05_Collections.md) \| [Next (2.7 Object Model)](07_Objects.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (2.6 List Comprehensions)](06_List_comprehension) \| [Next (3 Program Organization)](../03_Program_organization/00_Overview)
|
[Contents](../Contents.md) \| [Previous (2.6 List Comprehensions)](06_List_comprehension.md) \| [Next (3 Program Organization)](../03_Program_organization/00_Overview.md)
|
||||||
|
|
||||||
# 2.7 Objects
|
# 2.7 Objects
|
||||||
|
|
||||||
@@ -451,4 +451,4 @@ Bonus: How would you modify this example to additionally parse the
|
|||||||
Spend some time to ponder what you’ve done in this exercise. We’ll
|
Spend some time to ponder what you’ve done in this exercise. We’ll
|
||||||
revisit these ideas a little later.
|
revisit these ideas a little later.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (2.6 List Comprehensions)](06_List_comprehension) \| [Next (3 Program Organization)](../03_Program_organization/00_Overview)
|
[Contents](../Contents.md) \| [Previous (2.6 List Comprehensions)](06_List_comprehension.md) \| [Next (3 Program Organization)](../03_Program_organization/00_Overview.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (2.7 Object Model)](../02_Working_with_data/07_Objects) \| [Next (3.2 More on Functions)](02_More_functions)
|
[Contents](../Contents.md) \| [Previous (2.7 Object Model)](../02_Working_with_data/07_Objects.md) \| [Next (3.2 More on Functions)](02_More_functions.md)
|
||||||
|
|
||||||
# 3.1 Scripting
|
# 3.1 Scripting
|
||||||
|
|
||||||
@@ -299,4 +299,4 @@ you can. At some point, that script is going to grow and you'll wish
|
|||||||
you had a bit more organization. Also, a little known fact is that Python
|
you had a bit more organization. Also, a little known fact is that Python
|
||||||
runs a bit faster if you use functions.
|
runs a bit faster if you use functions.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (2.7 Object Model)](../02_Working_with_data/07_Objects) \| [Next (3.2 More on Functions)](02_More_functions)
|
[Contents](../Contents.md) \| [Previous (2.7 Object Model)](../02_Working_with_data/07_Objects.md) \| [Next (3.2 More on Functions)](02_More_functions.md)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (3.1 Scripting)](01_Script) \| [Next (3.3 Error Checking)](03_Error_checking)
|
[Contents](../Contents.md) \| [Previous (3.1 Scripting)](01_Script.md) \| [Next (3.3 Error Checking)](03_Error_checking.md)
|
||||||
|
|
||||||
# 3.2 More on Functions
|
# 3.2 More on Functions
|
||||||
|
|
||||||
@@ -513,4 +513,4 @@ select out columns of interest, perform type conversions, without
|
|||||||
having to worry too much about the inner workings of files or the
|
having to worry too much about the inner workings of files or the
|
||||||
`csv` module.
|
`csv` module.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (3.1 Scripting)](01_Script) \| [Next (3.3 Error Checking)](03_Error_checking)
|
[Contents](../Contents.md) \| [Previous (3.1 Scripting)](01_Script.md) \| [Next (3.3 Error Checking)](03_Error_checking.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (3.2 More on Functions)](02_More_functions) \| [Next (3.4 Modules)](04_Modules)
|
[Contents](../Contents.md) \| [Previous (3.2 More on Functions)](02_More_functions.md) \| [Next (3.4 Modules)](04_Modules.md)
|
||||||
|
|
||||||
# 3.3 Error Checking
|
# 3.3 Error Checking
|
||||||
|
|
||||||
@@ -402,4 +402,4 @@ most programs. As a general rule, you shouldn’t silently ignore
|
|||||||
errors. Instead, it’s better to report problems and to give the user
|
errors. Instead, it’s better to report problems and to give the user
|
||||||
an option to the silence the error message if they choose to do so.
|
an option to the silence the error message if they choose to do so.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (3.2 More on Functions)](02_More_functions) \| [Next (3.4 Modules)](04_Modules)
|
[Contents](../Contents.md) \| [Previous (3.2 More on Functions)](02_More_functions.md) \| [Next (3.4 Modules)](04_Modules.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (3.3 Error Checking)](03_Error_checking) \| [Next (3.5 Main Module)](05_Main_module)
|
[Contents](../Contents.md) \| [Previous (3.3 Error Checking)](03_Error_checking.md) \| [Next (3.5 Main Module)](05_Main_module.md)
|
||||||
|
|
||||||
# 3.4 Modules
|
# 3.4 Modules
|
||||||
|
|
||||||
@@ -338,4 +338,4 @@ also contains `read_portfolio()` and `read_prices()` functions. And
|
|||||||
finally, `pcost.py` which computes the portfolio cost, but makes use
|
finally, `pcost.py` which computes the portfolio cost, but makes use
|
||||||
of the `read_portfolio()` function written for the `report.py` program.
|
of the `read_portfolio()` function written for the `report.py` program.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (3.3 Error Checking)](03_Error_checking) \| [Next (3.5 Main Module)](05_Main_module)
|
[Contents](../Contents.md) \| [Previous (3.3 Error Checking)](03_Error_checking.md) \| [Next (3.5 Main Module)](05_Main_module.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (3.4 Modules)](04_Modules) \| [Next (3.6 Design Discussion)](06_Design_discussion)
|
[Contents](../Contents.md) \| [Previous (3.4 Modules)](04_Modules.md) \| [Next (3.6 Design Discussion)](06_Design_discussion.md)
|
||||||
|
|
||||||
# 3.5 Main Module
|
# 3.5 Main Module
|
||||||
|
|
||||||
@@ -303,4 +303,4 @@ bash $ python3 pcost.py Data/portfolio.csv
|
|||||||
Total cost: 44671.15
|
Total cost: 44671.15
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (3.4 Modules)](04_Modules) \| [Next (3.6 Design Discussion)](06_Design_discussion)
|
[Contents](../Contents.md) \| [Previous (3.4 Modules)](04_Modules.md) \| [Next (3.6 Design Discussion)](06_Design_discussion.md)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (3.5 Main module)](05_Main_module) \| [Next (4 Classes)](../04_Classes_objects/00_Overview)
|
[Contents](../Contents.md) \| [Previous (3.5 Main module)](05_Main_module.md) \| [Next (4 Classes)](../04_Classes_objects/00_Overview.md)
|
||||||
|
|
||||||
# 3.6 Design Discussion
|
# 3.6 Design Discussion
|
||||||
|
|
||||||
@@ -134,4 +134,4 @@ Fix the `read_portfolio()` and `read_prices()` functions in the
|
|||||||
Afterwards, your `report.py` and `pcost.py` programs should work
|
Afterwards, your `report.py` and `pcost.py` programs should work
|
||||||
the same way they always did.
|
the same way they always did.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (3.5 Main module)](05_Main_module) \| [Next (4 Classes)](../04_Classes_objects/00_Overview)
|
[Contents](../Contents.md) \| [Previous (3.5 Main module)](05_Main_module.md) \| [Next (4 Classes)](../04_Classes_objects/00_Overview.md)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (3.6 Design discussion)](../03_Program_organization/06_Design_discussion) \| [Next (4.2 Inheritance)](02_Inheritance)
|
[Contents](../Contents.md) \| [Previous (3.6 Design discussion)](../03_Program_organization/06_Design_discussion.md) \| [Next (4.2 Inheritance)](02_Inheritance.md)
|
||||||
|
|
||||||
# 4.1 Classes
|
# 4.1 Classes
|
||||||
|
|
||||||
@@ -295,4 +295,4 @@ You should be able to run your functions the same as before:
|
|||||||
>>>
|
>>>
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (3.6 Design discussion)](../03_Program_organization/06_Design_discussion) \| [Next (4.2 Inheritance)](02_Inheritance)
|
[Contents](../Contents.md) \| [Previous (3.6 Design discussion)](../03_Program_organization/06_Design_discussion.md) \| [Next (4.2 Inheritance)](02_Inheritance.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (4.1 Classes)](01_Class) \| [Next (4.3 Special methods)](03_Special_methods)
|
[Contents](../Contents.md) \| [Previous (4.1 Classes)](01_Class.md) \| [Next (4.3 Special methods)](03_Special_methods.md)
|
||||||
|
|
||||||
# 4.2 Inheritance
|
# 4.2 Inheritance
|
||||||
|
|
||||||
@@ -624,4 +624,4 @@ on the topic of design patterns (although understanding what happened
|
|||||||
in this exercise will take you pretty far in terms of using objects in
|
in this exercise will take you pretty far in terms of using objects in
|
||||||
a practically useful way).
|
a practically useful way).
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (4.1 Classes)](01_Class) \| [Next (4.3 Special methods)](03_Special_methods)
|
[Contents](../Contents.md) \| [Previous (4.1 Classes)](01_Class.md) \| [Next (4.3 Special methods)](03_Special_methods.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (4.2 Inheritance)](02_Inheritance) \| [Next (4.4 Exceptions)](04_Defining_exceptions)
|
[Contents](../Contents.md) \| [Previous (4.2 Inheritance)](02_Inheritance.md) \| [Next (4.4 Exceptions)](04_Defining_exceptions.md)
|
||||||
|
|
||||||
# 4.3 Special Methods
|
# 4.3 Special Methods
|
||||||
|
|
||||||
@@ -287,5 +287,5 @@ it should work:
|
|||||||
>>>
|
>>>
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (4.2 Inheritance)](02_Inheritance) \| [Next (4.4 Exceptions)](04_Defining_exceptions)
|
[Contents](../Contents.md) \| [Previous (4.2 Inheritance)](02_Inheritance.md) \| [Next (4.4 Exceptions)](04_Defining_exceptions.md)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (4.3 Special methods)](03_Special_methods) \| [Next (5 Object Model)](../05_Object_model/00_Overview)
|
[Contents](../Contents.md) \| [Previous (4.3 Special methods)](03_Special_methods.md) \| [Next (5 Object Model)](../05_Object_model/00_Overview.md)
|
||||||
|
|
||||||
# 4.4 Defining Exceptions
|
# 4.4 Defining Exceptions
|
||||||
|
|
||||||
@@ -51,4 +51,4 @@ FormatError: Unknown table format xls
|
|||||||
>>>
|
>>>
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (4.3 Special methods)](03_Special_methods) \| [Next (5 Object Model)](../05_Object_model/00_Overview)
|
[Contents](../Contents.md) \| [Previous (4.3 Special methods)](03_Special_methods.md) \| [Next (5 Object Model)](../05_Object_model/00_Overview.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (4.4 Exceptions)](../04_Classes_objects/04_Defining_exceptions) \| [Next (5.2 Encapsulation)](02_Classes_encapsulation)
|
[Contents](../Contents.md) \| [Previous (4.4 Exceptions)](../04_Classes_objects/04_Defining_exceptions.md) \| [Next (5.2 Encapsulation)](02_Classes_encapsulation.md)
|
||||||
|
|
||||||
# 5.1 Dictionaries Revisited
|
# 5.1 Dictionaries Revisited
|
||||||
|
|
||||||
@@ -656,5 +656,4 @@ Here's how the `cost()` method of instance `n` above would be found:
|
|||||||
>>>
|
>>>
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (4.4 Exceptions)](../04_Classes_objects/04_Defining_exceptions) \| [Next (5.2 Encapsulation)](02_Classes_encapsulation)
|
[Contents](../Contents.md) \| [Previous (4.4 Exceptions)](../04_Classes_objects/04_Defining_exceptions.md) \| [Next (5.2 Encapsulation)](02_Classes_encapsulation.md)
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (5.1 Dictionaries Revisited)](01_Dicts_revisited) \| [Next (6 Generators)](../06_Generators/00_Overview)
|
[Contents](../Contents.md) \| [Previous (5.1 Dictionaries Revisited)](01_Dicts_revisited.md) \| [Next (6 Generators)](../06_Generators/00_Overview.md)
|
||||||
|
|
||||||
# 5.2 Classes and Encapsulation
|
# 5.2 Classes and Encapsulation
|
||||||
|
|
||||||
@@ -353,4 +353,4 @@ optimization on classes that serve as data structures. Using slots
|
|||||||
will make such programs use far-less memory and run a bit faster.
|
will make such programs use far-less memory and run a bit faster.
|
||||||
You should probably avoid `__slots__` on most other classes however.
|
You should probably avoid `__slots__` on most other classes however.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (5.1 Dictionaries Revisited)](01_Dicts_revisited) \| [Next (6 Generators)](../06_Generators/00_Overview)
|
[Contents](../Contents.md) \| [Previous (5.1 Dictionaries Revisited)](01_Dicts_revisited.md) \| [Next (6 Generators)](../06_Generators/00_Overview.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (5.2 Encapsulation)](../05_Object_model/02_Classes_encapsulation) \| [Next (6.2 Customizing Iteration)](02_Customizing_iteration)
|
[Contents](../Contents.md) \| [Previous (5.2 Encapsulation)](../05_Object_model/02_Classes_encapsulation.md) \| [Next (6.2 Customizing Iteration)](02_Customizing_iteration.md)
|
||||||
|
|
||||||
# 6.1 Iteration Protocol
|
# 6.1 Iteration Protocol
|
||||||
|
|
||||||
@@ -314,4 +314,4 @@ Python normally work. For container objects, supporting iteration,
|
|||||||
indexing, containment, and other kinds of operators is an important
|
indexing, containment, and other kinds of operators is an important
|
||||||
part of this.
|
part of this.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (5.2 Encapsulation)](../05_Object_model/02_Classes_encapsulation) \| [Next (6.2 Customizing Iteration)](02_Customizing_iteration)
|
[Contents](../Contents.md) \| [Previous (5.2 Encapsulation)](../05_Object_model/02_Classes_encapsulation.md) \| [Next (6.2 Customizing Iteration)](02_Customizing_iteration.md)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (6.1 Iteration Protocol)](01_Iteration_protocol) \| [Next (6.3 Producer/Consumer)](03_Producers_consumers)
|
[Contents](../Contents.md) \| [Previous (6.1 Iteration Protocol)](01_Iteration_protocol.md) \| [Next (6.3 Producer/Consumer)](03_Producers_consumers.md)
|
||||||
|
|
||||||
# 6.2 Customizing Iteration
|
# 6.2 Customizing Iteration
|
||||||
|
|
||||||
@@ -267,4 +267,4 @@ is now this completely general purpose utility that you can use in any program.
|
|||||||
example, you could use it to watch server logs, debugging logs, and other similar data sources.
|
example, you could use it to watch server logs, debugging logs, and other similar data sources.
|
||||||
That's kind of cool.
|
That's kind of cool.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (6.1 Iteration Protocol)](01_Iteration_protocol) \| [Next (6.3 Producer/Consumer)](03_Producers_consumers)
|
[Contents](../Contents.md) \| [Previous (6.1 Iteration Protocol)](01_Iteration_protocol.md) \| [Next (6.3 Producer/Consumer)](03_Producers_consumers.md)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (6.2 Customizing Iteration)](02_Customizing_iteration) \| [Next (6.4 Generator Expressions)](04_More_generators)
|
[Contents](../Contents.md) \| [Previous (6.2 Customizing Iteration)](02_Customizing_iteration.md) \| [Next (6.4 Generator Expressions)](04_More_generators.md)
|
||||||
|
|
||||||
# 6.3 Producers, Consumers and Pipelines
|
# 6.3 Producers, Consumers and Pipelines
|
||||||
|
|
||||||
@@ -299,6 +299,4 @@ pipelines. In addition, you can create functions that package a
|
|||||||
series of pipeline stages into a single function call (for example,
|
series of pipeline stages into a single function call (for example,
|
||||||
the `parse_stock_data()` function).
|
the `parse_stock_data()` function).
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (6.2 Customizing Iteration)](02_Customizing_iteration) \| [Next (6.4 Generator Expressions)](04_More_generators)
|
[Contents](../Contents.md) \| [Previous (6.2 Customizing Iteration)](02_Customizing_iteration.md) \| [Next (6.4 Generator Expressions)](04_More_generators.md)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (6.3 Producer/Consumer)](03_Producers_consumers) \| [Next (7 Advanced Topics)](../07_Advanced_Topics/00_Overview)
|
[Contents](../Contents.md) \| [Previous (6.3 Producer/Consumer)](03_Producers_consumers.md) \| [Next (7 Advanced Topics)](../07_Advanced_Topics/00_Overview.md)
|
||||||
|
|
||||||
# 6.4 More Generators
|
# 6.4 More Generators
|
||||||
|
|
||||||
@@ -180,4 +180,4 @@ Modify the `ticker.py` program to use generator expressions
|
|||||||
as appropriate.
|
as appropriate.
|
||||||
|
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (6.3 Producer/Consumer)](03_Producers_consumers) \| [Next (7 Advanced Topics)](../07_Advanced_Topics/00_Overview)
|
[Contents](../Contents.md) \| [Previous (6.3 Producer/Consumer)](03_Producers_consumers.md) \| [Next (7 Advanced Topics)](../07_Advanced_Topics/00_Overview.md)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (6.4 Generator Expressions)](../06_Generators/04_More_generators) \| [Next (7.2 Anonymous Functions)](02_Anonymous_function)
|
[Contents](../Contents.md) \| [Previous (6.4 Generator Expressions)](../06_Generators/04_More_generators.md) \| [Next (7.2 Anonymous Functions)](02_Anonymous_function.md)
|
||||||
|
|
||||||
# 7.1 Variable Arguments
|
# 7.1 Variable Arguments
|
||||||
|
|
||||||
@@ -230,4 +230,4 @@ Now, try silencing the errors:
|
|||||||
>>>
|
>>>
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (6.4 Generator Expressions)](../06_Generators/04_More_generators) \| [Next (7.2 Anonymous Functions)](02_Anonymous_function)
|
[Contents](../Contents.md) \| [Previous (6.4 Generator Expressions)](../06_Generators/04_More_generators.md) \| [Next (7.2 Anonymous Functions)](02_Anonymous_function.md)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (7.1 Variable Arguments)](01_Variable_arguments) \| [Next (7.3 Returning Functions)](03_Returning_functions)
|
[Contents](../Contents.md) \| [Previous (7.1 Variable Arguments)](01_Variable_arguments.md) \| [Next (7.3 Returning Functions)](03_Returning_functions.md)
|
||||||
|
|
||||||
# 7.2 Anonymous Functions and Lambda
|
# 7.2 Anonymous Functions and Lambda
|
||||||
|
|
||||||
@@ -165,4 +165,4 @@ Note: `lambda` is a useful shortcut because it allows you to
|
|||||||
define a special processing function directly in the call to `sort()` as
|
define a special processing function directly in the call to `sort()` as
|
||||||
opposed to having to define a separate function first.
|
opposed to having to define a separate function first.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (7.1 Variable Arguments)](01_Variable_arguments) \| [Next (7.3 Returning Functions)](03_Returning_functions)
|
[Contents](../Contents.md) \| [Previous (7.1 Variable Arguments)](01_Variable_arguments.md) \| [Next (7.3 Returning Functions)](03_Returning_functions.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (7.2 Anonymous Functions)](02_Anonymous_function) \| [Next (7.4 Decorators)](04_Function_decorators)
|
[Contents](../Contents.md) \| [Previous (7.2 Anonymous Functions)](02_Anonymous_function.md) \| [Next (7.4 Decorators)](04_Function_decorators.md)
|
||||||
|
|
||||||
# 7.3 Returning Functions
|
# 7.3 Returning Functions
|
||||||
|
|
||||||
@@ -237,4 +237,4 @@ is often good.
|
|||||||
Rewrite the `Stock` class in the file `stock.py` so that it uses typed properties
|
Rewrite the `Stock` class in the file `stock.py` so that it uses typed properties
|
||||||
as shown.
|
as shown.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (7.2 Anonymous Functions)](02_Anonymous_function) \| [Next (7.4 Decorators)](04_Function_decorators)
|
[Contents](../Contents.md) \| [Previous (7.2 Anonymous Functions)](02_Anonymous_function.md) \| [Next (7.4 Decorators)](04_Function_decorators.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (7.3 Returning Functions)](03_Returning_functions) \| [Next (7.5 Decorated Methods)](05_Decorated_methods)
|
[Contents](../Contents.md) \| [Previous (7.3 Returning Functions)](03_Returning_functions.md) \| [Next (7.5 Decorated Methods)](05_Decorated_methods.md)
|
||||||
|
|
||||||
# 7.4 Function Decorators
|
# 7.4 Function Decorators
|
||||||
|
|
||||||
@@ -157,4 +157,4 @@ Discussion: This `@timethis` decorator can be placed in front of any
|
|||||||
function definition. Thus, you might use it as a diagnostic tool for
|
function definition. Thus, you might use it as a diagnostic tool for
|
||||||
performance tuning.
|
performance tuning.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (7.3 Returning Functions)](03_Returning_functions) \| [Next (7.5 Decorated Methods)](05_Decorated_methods)
|
[Contents](../Contents.md) \| [Previous (7.3 Returning Functions)](03_Returning_functions.md) \| [Next (7.5 Decorated Methods)](05_Decorated_methods.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (7.4 Decorators)](04_Function_decorators) \| [Next (8 Testing and Debugging)](../08_Testing_debugging/00_Overview)
|
[Contents](../Contents.md) \| [Previous (7.4 Decorators)](04_Function_decorators.md) \| [Next (8 Testing and Debugging)](../08_Testing_debugging/00_Overview.md)
|
||||||
|
|
||||||
# 7.5 Decorated Methods
|
# 7.5 Decorated Methods
|
||||||
|
|
||||||
@@ -208,4 +208,4 @@ To use this new Portfolio class, you can now write code like this:
|
|||||||
Make these changes to the `Portfolio` class and modify the `report.py`
|
Make these changes to the `Portfolio` class and modify the `report.py`
|
||||||
code to use the class method.
|
code to use the class method.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (7.4 Decorators)](04_Function_decorators) \| [Next (8 Testing and Debugging)](../08_Testing_debugging/00_Overview)
|
[Contents](../Contents.md) \| [Previous (7.4 Decorators)](04_Function_decorators.md) \| [Next (8 Testing and Debugging)](../08_Testing_debugging/00_Overview.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (7.5 Decorated Methods)](../07_Advanced_Topics/05_Decorated_methods) \| [Next (8.2 Logging)](02_Logging)
|
[Contents](../Contents.md) \| [Previous (7.5 Decorated Methods)](../07_Advanced_Topics/05_Decorated_methods.md) \| [Next (8.2 Logging)](02_Logging.md)
|
||||||
|
|
||||||
# 8.1 Testing
|
# 8.1 Testing
|
||||||
|
|
||||||
@@ -290,4 +290,4 @@ class TestStock(unittest.TestCase):
|
|||||||
s.shares = '100'
|
s.shares = '100'
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (7.5 Decorated Methods)](../07_Advanced_Topics/05_Decorated_methods) \| [Next (8.2 Logging)](02_Logging)
|
[Contents](../Contents.md) \| [Previous (7.5 Decorated Methods)](../07_Advanced_Topics/05_Decorated_methods.md) \| [Next (8.2 Logging)](02_Logging.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (8.1 Testing)](01_Testing) \| [Next (8.3 Debugging)](03_Debugging)
|
[Contents](../Contents.md) \| [Previous (8.1 Testing)](01_Testing.md) \| [Next (8.3 Debugging)](03_Debugging.md)
|
||||||
|
|
||||||
# 8.2 Logging
|
# 8.2 Logging
|
||||||
|
|
||||||
@@ -306,4 +306,4 @@ logging.basicConfig(
|
|||||||
Again, you'd need to put this someplace in the startup steps of your
|
Again, you'd need to put this someplace in the startup steps of your
|
||||||
program. For example, where would you put this in your `report.py` program?
|
program. For example, where would you put this in your `report.py` program?
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (8.1 Testing)](01_Testing) \| [Next (8.3 Debugging)](03_Debugging)
|
[Contents](../Contents.md) \| [Previous (8.1 Testing)](01_Testing.md) \| [Next (8.3 Debugging)](03_Debugging.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (8.2 Logging)](02_Logging) \| [Next (9 Packages)](../09_Packages/00_Overview)
|
[Contents](../Contents.md) \| [Previous (8.2 Logging)](02_Logging.md) \| [Next (9 Packages)](../09_Packages/00_Overview.md)
|
||||||
|
|
||||||
# 8.3 Debugging
|
# 8.3 Debugging
|
||||||
|
|
||||||
@@ -158,4 +158,4 @@ For breakpoints location is one of the following.
|
|||||||
|
|
||||||
It runs. Ship it!
|
It runs. Ship it!
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (8.2 Logging)](02_Logging) \| [Next (9 Packages)](../09_Packages/00_Overview)
|
[Contents](../Contents.md) \| [Previous (8.2 Logging)](02_Logging.md) \| [Next (9 Packages)](../09_Packages/00_Overview.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (8.3 Debugging)](../08_Testing_debugging/03_Debugging) \| [Next (9.2 Third Party Packages)](02_Third_party.md)
|
[Contents](../Contents.md) \| [Previous (8.3 Debugging)](../08_Testing_debugging/03_Debugging.md) \| [Next (9.2 Third Party Packages)](02_Third_party.md)
|
||||||
|
|
||||||
# 9.1 Packages
|
# 9.1 Packages
|
||||||
|
|
||||||
@@ -441,4 +441,4 @@ porty-app/
|
|||||||
typedproperty.py
|
typedproperty.py
|
||||||
```
|
```
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (8.3 Debugging)](../08_Testing_debugging/03_Debugging) \| [Next (9.2 Third Party Packages)](02_Third_party.md)
|
[Contents](../Contents.md) \| [Previous (8.3 Debugging)](../08_Testing_debugging/03_Debugging.md) \| [Next (9.2 Third Party Packages)](02_Third_party.md)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[Contents](../Contents.md) \| [Previous (9.1 Packages)](01_Packages) \| [Next (9.3 Distribution)](03_Distribution)
|
[Contents](../Contents.md) \| [Previous (9.1 Packages)](01_Packages.md) \| [Next (9.3 Distribution)](03_Distribution.md)
|
||||||
|
|
||||||
# 9.2 Third Party Modules
|
# 9.2 Third Party Modules
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ I refer you to the [Python Packaging User Guide](https://packaging.python.org).
|
|||||||
See if you can recreate the steps of making a virtual environment and installing
|
See if you can recreate the steps of making a virtual environment and installing
|
||||||
pandas into it as shown above.
|
pandas into it as shown above.
|
||||||
|
|
||||||
[Contents](../Contents.md) \| [Previous (9.1 Packages)](01_Packages) \| [Next (9.3 Distribution)](03_Distribution)
|
[Contents](../Contents.md) \| [Previous (9.1 Packages)](01_Packages.md) \| [Next (9.3 Distribution)](03_Distribution.md)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user