forked from rsokl/Learning_Python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodule_5.html
300 lines (183 loc) · 15 KB
/
module_5.html
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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Module 5: Odds and Ends — Python Like You Mean It</title>
<script type="text/javascript" src="_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/language_data.js"></script>
<script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id=UA-115029372-1"></script>
<script type="text/javascript" src="_static/gtag.js"></script>
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true, "ignoreClass": "document", "processClass": "math|output_area"}})</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/my_theme.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Writing Good Code" href="Module5_OddsAndEnds/Writing_Good_Code.html" />
<link rel="prev" title="Inheritance" href="Module4_OOP/Inheritance.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home"> Python Like You Mean It
</a>
<div class="version">
1.4
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Table of Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="intro.html">Python Like You Mean It</a></li>
<li class="toctree-l1"><a class="reference internal" href="module_1.html">Module 1: Getting Started with Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="module_2.html">Module 2: The Essentials of Python</a></li>
<li class="toctree-l1"><a class="reference internal" href="module_2_problems.html">Module 2: Problems</a></li>
<li class="toctree-l1"><a class="reference internal" href="module_3.html">Module 3: The Essentials of NumPy</a></li>
<li class="toctree-l1"><a class="reference internal" href="module_3_problems.html">Module 3: Problems</a></li>
<li class="toctree-l1"><a class="reference internal" href="module_4.html">Module 4: Object Oriented Programming</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Module 5: Odds and Ends</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html">Writing Good Code</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Matplotlib.html">Matplotlib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html">Working with Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html">Import: Modules and Packages</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="changes.html">Changelog</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Python Like You Mean It</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> »</li>
<li>Module 5: Odds and Ends</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/module_5.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<style>
/* CSS overrides for sphinx_rtd_theme */
/* 24px margin */
.nbinput.nblast,
.nboutput.nblast {
margin-bottom: 19px; /* padding has already 5px */
}
/* ... except between code cells! */
.nblast + .nbinput {
margin-top: -19px;
}
.admonition > p:before {
margin-right: 4px; /* make room for the exclamation icon */
}
/* Fix math alignment, see https://github.com/rtfd/sphinx_rtd_theme/pull/686 */
.math {
text-align: unset;
}
</style>
<div class="section" id="module-5-odds-and-ends">
<h1>Module 5: Odds and Ends<a class="headerlink" href="#module-5-odds-and-ends" title="Permalink to this headline">¶</a></h1>
<p>This module contains materials that are extraneous to the essentials of Python as a language and of NumPy, but are nonetheless critical to doing day-to-day work using these tools.</p>
<p>The first section introduces some general guidelines for writing “good code”. Specifically, it points you, the reader, to a style guide that many people in the Python community abide by. It also introduces a relatively new and increasingly-popular feature of Python, called type-hinting, which permits us to enhance our code with type-documentation annotations. The reader will also be introduced to NumPy’s and Google’s respective specifications for writing good docstrings.</p>
<p>The second section of this module introduces matplotlib, a library that allows us to plot and visually inspect data. Here, we will specifically learn how to leverage matplotlib’s object-oriented API, as opposed to its functional API, for creating scatter plots, line plots, histograms, and image plots.</p>
<p>The next section presents the “best practices” for working with files in Python. This includes reading from and writing to files within a context manager. We will learn to leverage the powerful <code class="code docutils literal notranslate"><span class="pre">pathlib.Path</span></code> class to work with paths in elegant and platform-independent ways. Finally, we review some critical file utilities, like searching for files with <code class="code docutils literal notranslate"><span class="pre">glob</span></code>, saving files with <code class="code docutils literal notranslate"><span class="pre">pickle</span></code>, and saving NumPy arrays.</p>
<p>Moving forward, we will study Python’s packaging system, which gives us insight into what the <code class="code docutils literal notranslate"><span class="pre">import</span></code> statement is all about. This naturally leads us to consider what it actually means to install a Python package on one’s machine. We will review the <code class="code docutils literal notranslate"><span class="pre">pip</span></code> and <code class="code docutils literal notranslate"><span class="pre">conda</span></code> package managers, which are the two prominent means for installing and managing Python packages on one’s machine. This is section will be critical for anyone interesting in maturing from a Jupyter notebook-only Python user to someone who can craft their own installable Python project. It will also greatly improve your ability to troubleshoot Python-related technical issues on your machine.</p>
<p>More sections will be added to this module down the road.</p>
<div class="toctree-wrapper compound">
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html">Writing Good Code</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html#The-PEP8-Style-Guide-to-Python-Code">The PEP8 Style Guide to Python Code</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html#Type-Hinting">Type-Hinting</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html#Documentation-Styles">Documentation Styles</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html#Links-to-Official-Documentation">Links to Official Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html#Reading-Comprehension-Solutions">Reading Comprehension Solutions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Module5_OddsAndEnds/Matplotlib.html">Matplotlib</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Plotting-in-Jupyter-Notebooks">Plotting in Jupyter Notebooks</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Creating-Figures-and-Axes-with-pyplot.subplots">Creating Figures and Axes with <code class="docutils literal notranslate"><span class="pre">pyplot.subplots</span></code></a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Displaying-Images">Displaying Images</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Beyond-Matplotlib">Beyond Matplotlib</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Links-to-Official-Documentation">Links to Official Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Reading-Comprehension-Exercise-Solutions:">Reading Comprehension Exercise Solutions:</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html">Working with Files</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Working-with-Paths">Working with Paths</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Opening-Files">Opening Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Example:-Writing-and-Reading-a-Text-File">Example: Writing and Reading a Text File</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Globbing-for-Files">Globbing for Files</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Saving-&-Loading-Python-Objects:-pickle">Saving & Loading Python Objects: pickle</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Saving-and-Loading-NumPy-Arrays">Saving and Loading NumPy Arrays</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Links-to-Official-Documentation">Links to Official Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Reading-Comprehension-Solutions">Reading Comprehension Solutions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html">Import: Modules and Packages</a><ul>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Modules">Modules</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Import-Statements">Import Statements</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Packages">Packages</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Intra-Module-Imports">Intra-Module Imports</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Installing-a-Package">Installing a Package</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#pip-and-conda:-Package-Managers">pip and conda: Package Managers</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Links-to-Official-Documentation">Links to Official Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Reading-Comprehension-Exercise-Solutions:">Reading Comprehension Exercise Solutions:</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="Module5_OddsAndEnds/Writing_Good_Code.html" class="btn btn-neutral float-right" title="Writing Good Code" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="Module4_OOP/Inheritance.html" class="btn btn-neutral float-left" title="Inheritance" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
© Copyright 2019, Ryan Soklaski
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>