-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.html
More file actions
235 lines (222 loc) · 18.1 KB
/
index.html
File metadata and controls
235 lines (222 loc) · 18.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Object oriented programming in Python for mathematicians — Object-oriented Programming documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="_static/fenics.css?v=8c7d05f9" />
<link rel="stylesheet" type="text/css" href="_static/proof.css" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css?v=fd3f3429" />
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/proof.js"></script>
<script async="async" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Preface" href="0_preface.html" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-0EFVH5C4DC"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-0EFVH5C4DC');
</script>
<link rel="stylesheet" href="_static/featured.css">
<link rel="shortcut icon" href="_static/icon.ico" />
</head><body>
<div class="wrapper">
<a href="#"><img src="_static/banner.png" width="900px" alt="FInAT Project Banner" /></a>
<div id="access">
<div class="menu">
<ul>
<li class="page_item"><a href="#" title="Book">Book</a></li>
<li class="page_item"><a href="videos.html" title="Videos">Videos</a></li>
<li class="page_item"><a href="exercises.html"
title="Exercises">Exercises</a></li>
<li class="page_item"><a href="installation.html" title="Installation">Installation</a></li>
</ul>
</div><!-- .menu -->
</div><!-- #access -->
</div><!-- #wrapper -->
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<p>Welcome to the website for the book Object-oriented Programming in Python
for Mathematicians. Here you’ll find the full hyperlinked book text, as well
as consolidated lists of the accompanying <a class="reference internal" href="videos.html"><span class="doc">videos</span></a> and
<a class="reference internal" href="exercises.html"><span class="doc">exercise repositories</span></a>.</p>
<a class="reference external image-reference" href="https://www.amazon.co.uk/dp/B0CJXLFDFD"><img alt="_images/cover.png" class="align-right" src="_images/cover.png" style="width: 10em;" />
</a>
<p>The complete book text is available on this website. However, if you’d
like to have a physical copy, then please <a class="reference external" href="https://www.amazon.co.uk/dp/B0CJXLFDFD">buy the book</a>.</p>
<div class="preface docutils container">
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="0_preface.html">Preface</a><ul>
<li class="toctree-l2"><a class="reference internal" href="0_preface.html#what-is-this-book-for">What is this book for?</a></li>
<li class="toctree-l2"><a class="reference internal" href="0_preface.html#who-is-this-book-for">Who is this book for?</a></li>
<li class="toctree-l2"><a class="reference internal" href="0_preface.html#how-to-use-this-book">How to use this book</a></li>
<li class="toctree-l2"><a class="reference internal" href="0_preface.html#conventions-employed">Conventions employed</a></li>
<li class="toctree-l2"><a class="reference internal" href="0_preface.html#teaching-this-course-elsewhere">Teaching this course elsewhere</a></li>
<li class="toctree-l2"><a class="reference internal" href="0_preface.html#acknowledgements">Acknowledgements</a></li>
<li class="toctree-l2"><a class="reference internal" href="0_preface.html#changes-in-the-second-and-third-editions">Changes in the second and third editions</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="1_introduction.html">1. Introduction: abstraction in mathematics and programming</a><ul>
<li class="toctree-l2"><a class="reference internal" href="1_introduction.html#obtaining-the-right-software-tools">1.1. Obtaining the right software tools</a></li>
<li class="toctree-l2"><a class="reference internal" href="1_introduction.html#setting-up-a-python-virtual-environment">1.2. Setting up a Python virtual environment</a></li>
<li class="toctree-l2"><a class="reference internal" href="1_introduction.html#installing-python-packages">1.3. Installing Python packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="1_introduction.html#glossary">1.4. Glossary</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="2_programs_in_files.html">2. Programs in files</a><ul>
<li class="toctree-l2"><a class="reference internal" href="2_programs_in_files.html#the-python-interpreter">2.1. The Python interpreter</a></li>
<li class="toctree-l2"><a class="reference internal" href="2_programs_in_files.html#python-scripts-and-text-editors">2.2. Python scripts and text editors</a></li>
<li class="toctree-l2"><a class="reference internal" href="2_programs_in_files.html#modules">2.3. Modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="2_programs_in_files.html#packages">2.4. Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="2_programs_in_files.html#testing-frameworks">2.5. Testing frameworks</a></li>
<li class="toctree-l2"><a class="reference internal" href="2_programs_in_files.html#writing-code-to-a-specified-interface">2.6. Writing code to a specified interface</a></li>
<li class="toctree-l2"><a class="reference internal" href="2_programs_in_files.html#glossary">2.7. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="2_programs_in_files.html#exercises">2.8. Exercises</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="3_objects.html">3. Objects and abstraction</a><ul>
<li class="toctree-l2"><a class="reference internal" href="3_objects.html#abstraction-in-action">3.1. Abstraction in action</a></li>
<li class="toctree-l2"><a class="reference internal" href="3_objects.html#types">3.2. Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="3_objects.html#defining-new-types">3.3. Defining new types</a></li>
<li class="toctree-l2"><a class="reference internal" href="3_objects.html#encapsulation">3.4. Encapsulation</a></li>
<li class="toctree-l2"><a class="reference internal" href="3_objects.html#assignment-and-instantiation">3.5. Assignment and instantiation</a></li>
<li class="toctree-l2"><a class="reference internal" href="3_objects.html#glossary">3.6. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="3_objects.html#exercises">3.7. Exercises</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="4_style.html">4. A matter of style</a><ul>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#the-value-of-convention">4.1. The value of convention</a></li>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#pep-8">4.2. PEP 8</a></li>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#code-layout">4.3. Code layout</a></li>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#names">4.4. Names</a></li>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#parsimony">4.5. Parsimony</a></li>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#comments">4.6. Comments</a></li>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#docstrings">4.7. Docstrings</a></li>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#a-brief-diversion-into-cellular-automata">4.8. A brief diversion into cellular automata</a></li>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#glossary">4.9. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="4_style.html#exercises">4.10. Exercises</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="5_abstract_data_types.html">5. Abstract data types</a><ul>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#stacks">5.1. Stacks</a></li>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#separation-of-concerns">5.2. Separation of concerns</a></li>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#algorithmic-complexity">5.3. Algorithmic complexity</a></li>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#queues-and-deques">5.4. Queues and deques</a></li>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#linked-lists">5.5. Linked lists</a></li>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#the-iterator-protocol">5.6. The iterator protocol</a></li>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#generator-expressions">5.7. Generator expressions</a></li>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#other-abstract-data-types">5.8. Other abstract data types</a></li>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#glossary">5.9. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="5_abstract_data_types.html#exercises">5.10. Exercises</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="6_exceptions.html">6. Errors and exceptions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="6_exceptions.html#what-is-an-error">6.1. What is an error?</a></li>
<li class="toctree-l2"><a class="reference internal" href="6_exceptions.html#exceptions">6.2. Exceptions</a></li>
<li class="toctree-l2"><a class="reference internal" href="6_exceptions.html#tracebacks-finding-errors">6.3. Tracebacks: finding errors</a></li>
<li class="toctree-l2"><a class="reference internal" href="6_exceptions.html#raising-exceptions">6.4. Raising exceptions</a></li>
<li class="toctree-l2"><a class="reference internal" href="6_exceptions.html#handling-exceptions">6.5. Handling exceptions</a></li>
<li class="toctree-l2"><a class="reference internal" href="6_exceptions.html#exceptions-are-not-always-errors">6.6. Exceptions are not always errors</a></li>
<li class="toctree-l2"><a class="reference internal" href="6_exceptions.html#glossary">6.7. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="6_exceptions.html#exercises">6.8. Exercises</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="7_inheritance.html">7. Inheritance and composition</a><ul>
<li class="toctree-l2"><a class="reference internal" href="7_inheritance.html#an-example-from-group-theory">7.1. An example from group theory</a></li>
<li class="toctree-l2"><a class="reference internal" href="7_inheritance.html#id1">7.2. Inheritance</a></li>
<li class="toctree-l2"><a class="reference internal" href="7_inheritance.html#calling-parent-class-methods">7.3. Calling parent class methods</a></li>
<li class="toctree-l2"><a class="reference internal" href="7_inheritance.html#creating-new-exception-classes">7.4. Creating new exception classes</a></li>
<li class="toctree-l2"><a class="reference internal" href="7_inheritance.html#glossary">7.5. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="7_inheritance.html#exercises">7.6. Exercises</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="8_debugging.html">8. Debugging and testing</a><ul>
<li class="toctree-l2"><a class="reference internal" href="8_debugging.html#pandas">8.1. Pandas</a></li>
<li class="toctree-l2"><a class="reference internal" href="8_debugging.html#debuggers">8.2. Debuggers</a></li>
<li class="toctree-l2"><a class="reference internal" href="8_debugging.html#using-a-graphical-debugger">8.3. Using a graphical debugger</a></li>
<li class="toctree-l2"><a class="reference internal" href="8_debugging.html#invoking-a-command-line-debugger">8.4. Invoking a command-line debugger</a></li>
<li class="toctree-l2"><a class="reference internal" href="8_debugging.html#command-line-debugger-commands">8.5. Command-line debugger commands</a></li>
<li class="toctree-l2"><a class="reference internal" href="8_debugging.html#debugging-strategy">8.6. Debugging strategy</a></li>
<li class="toctree-l2"><a class="reference internal" href="8_debugging.html#debugging-tactics">8.7. Debugging tactics</a></li>
<li class="toctree-l2"><a class="reference internal" href="8_debugging.html#glossary">8.8. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="8_debugging.html#exercises">8.9. Exercises</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html">9. Trees and directed acyclic graphs</a><ul>
<li class="toctree-l2"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html#the-splat-and-double-splat-operators">9.1. The splat and double splat operators</a></li>
<li class="toctree-l2"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html#graph-and-tree-definitions">9.2. Graph and tree definitions</a></li>
<li class="toctree-l2"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html#data-structures-for-trees">9.3. Data structures for trees</a></li>
<li class="toctree-l2"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html#expression-trees">9.4. Expression trees</a></li>
<li class="toctree-l2"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html#avoiding-recursion">9.5. Avoiding recursion</a></li>
<li class="toctree-l2"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html#representing-expressions-as-dags">9.6. Representing expressions as <span class="xref std std-term">DAGs</span></a></li>
<li class="toctree-l2"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html#differentiation-as-an-expression-visitor">9.7. Differentiation as an expression visitor</a></li>
<li class="toctree-l2"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html#glossary">9.8. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="9_trees_and_directed_acyclic_graphs.html#exercises">9.9. Exercises</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="10_further_object-oriented_features.html">10. Further object-oriented features</a><ul>
<li class="toctree-l2"><a class="reference internal" href="10_further_object-oriented_features.html#decorators">10.1. Decorators</a></li>
<li class="toctree-l2"><a class="reference internal" href="10_further_object-oriented_features.html#abstract-base-classes">10.2. Abstract base classes</a></li>
<li class="toctree-l2"><a class="reference internal" href="10_further_object-oriented_features.html#glossary">10.3. Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="10_further_object-oriented_features.html#exercises">10.4. Exercises</a></li>
</ul>
</li>
</ul>
</div>
<div class="appendix docutils container">
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="a1_help.html">1. Getting help</a><ul>
<li class="toctree-l2"><a class="reference internal" href="a1_help.html#writing-an-issue-report">1.1. Writing an issue report</a></li>
<li class="toctree-l2"><a class="reference internal" href="a1_help.html#title">1.2. Title</a></li>
<li class="toctree-l2"><a class="reference internal" href="a1_help.html#steps-to-reproduce">1.3. Steps to reproduce</a></li>
<li class="toctree-l2"><a class="reference internal" href="a1_help.html#observed-result">1.4. Observed result</a></li>
<li class="toctree-l2"><a class="reference internal" href="a1_help.html#expected-result">1.5. Expected result</a></li>
<li class="toctree-l2"><a class="reference internal" href="a1_help.html#any-other-information">1.6. Any other information</a></li>
<li class="toctree-l2"><a class="reference internal" href="a1_help.html#issue-pitfalls">1.7. Issue pitfalls</a></li>
<li class="toctree-l2"><a class="reference internal" href="a1_help.html#an-example-issue-report">1.8. An example issue report</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="a2_git.html">2. Just enough Git to get by</a><ul>
<li class="toctree-l2"><a class="reference internal" href="a2_git.html#what-is-git">2.1. What is Git?</a></li>
<li class="toctree-l2"><a class="reference internal" href="a2_git.html#what-is-github">2.2. What is GitHub?</a></li>
<li class="toctree-l2"><a class="reference internal" href="a2_git.html#what-is-github-classroom">2.3. What is GitHub Classroom?</a></li>
<li class="toctree-l2"><a class="reference internal" href="a2_git.html#configuring-git">2.4. Configuring Git</a></li>
<li class="toctree-l2"><a class="reference internal" href="a2_git.html#signing-up-to-github">2.5. Signing up to GitHub</a></li>
<li class="toctree-l2"><a class="reference internal" href="a2_git.html#doing-exercises-using-github-or-github-classroom">2.6. Doing exercises using GitHub or GitHub Classroom</a></li>
<li class="toctree-l2"><a class="reference internal" href="a2_git.html#doing-an-exercise-again">2.7. Doing an exercise again</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer" role="contentinfo">
© Copyright 2019-2023, David A. Ham.
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.4.7.
</div>
</body>
</html>