- Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathmodule_5.html
198 lines (179 loc) · 14.2 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
<!DOCTYPE html>
<htmlclass="writer-html5" lang="en" >
<head>
<metacharset="utf-8" />
<metaname="viewport" content="width=device-width, initial-scale=1.0" />
<title>Module 5: Odds and Ends — Python Like You Mean It</title>
<linkrel="stylesheet" href="_static/pygments.css" type="text/css" />
<linkrel="stylesheet" href="_static/css/theme.css" type="text/css" />
<linkrel="stylesheet" href="_static/my_theme.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<scriptdata-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<scriptsrc="_static/jquery.js"></script>
<scriptsrc="_static/underscore.js"></script>
<scriptsrc="_static/doctools.js"></script>
<scriptasync="async" src="https://www.googletagmanager.com/gtag/js?id=UA-115029372-1"></script>
<scriptsrc="_static/gtag.js"></script>
<scriptcrossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
<scriptsrc="_static/js/theme.js"></script>
<linkrel="index" title="Index" href="genindex.html" />
<linkrel="search" title="Search" href="search.html" />
<linkrel="next" title="Writing Good Code" href="Module5_OddsAndEnds/Writing_Good_Code.html" />
<linkrel="prev" title="Inheritance" href="Module4_OOP/Inheritance.html" />
</head>
<bodyclass="wy-body-for-nav">
<divclass="wy-grid-for-nav">
<navdata-toggle="wy-nav-shift" class="wy-nav-side">
<divclass="wy-side-scroll">
<divclass="wy-side-nav-search" >
<ahref="index.html" class="icon icon-home"> Python Like You Mean It
</a>
<divclass="version">
1.4
</div>
<divrole="search">
<formid="rtd-search-form" class="wy-form" action="search.html" method="get">
<inputtype="text" name="q" placeholder="Search docs" />
<inputtype="hidden" name="check_keywords" value="yes" />
<inputtype="hidden" name="area" value="default" />
</form>
</div>
</div><divclass="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<pclass="caption" role="heading"><spanclass="caption-text">Table of Contents:</span></p>
<ulclass="current">
<liclass="toctree-l1"><aclass="reference internal" href="intro.html">Python Like You Mean It</a></li>
<liclass="toctree-l1"><aclass="reference internal" href="module_1.html">Module 1: Getting Started with Python</a></li>
<liclass="toctree-l1"><aclass="reference internal" href="module_2.html">Module 2: The Essentials of Python</a></li>
<liclass="toctree-l1"><aclass="reference internal" href="module_2_problems.html">Module 2: Problems</a></li>
<liclass="toctree-l1"><aclass="reference internal" href="module_3.html">Module 3: The Essentials of NumPy</a></li>
<liclass="toctree-l1"><aclass="reference internal" href="module_3_problems.html">Module 3: Problems</a></li>
<liclass="toctree-l1"><aclass="reference internal" href="module_4.html">Module 4: Object Oriented Programming</a></li>
<liclass="toctree-l1 current"><aclass="current reference internal" href="#">Module 5: Odds and Ends</a><ul>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html">Writing Good Code</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Matplotlib.html">Matplotlib</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html">Working with Files</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html">Import: Modules and Packages</a></li>
</ul>
</li>
<liclass="toctree-l1"><aclass="reference internal" href="changes.html">Changelog</a></li>
</ul>
</div>
</div>
</nav>
<sectiondata-toggle="wy-nav-shift" class="wy-nav-content-wrap"><navclass="wy-nav-top" aria-label="Mobile navigation menu" >
<idata-toggle="wy-nav-top" class="fa fa-bars"></i>
<ahref="index.html">Python Like You Mean It</a>
</nav>
<divclass="wy-nav-content">
<divclass="rst-content">
<divrole="navigation" aria-label="Page navigation">
<ulclass="wy-breadcrumbs">
<li><ahref="index.html" class="icon icon-home"></a> »</li>
<li>Module 5: Odds and Ends</li>
<liclass="wy-breadcrumbs-aside">
<ahref="_sources/module_5.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<divrole="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<divitemprop="articleBody">
<style>
/* CSS overrides for sphinx_rtd_theme */
/* 24px margin */
.nbinput.nblast.container,
.nboutput.nblast.container {
margin-bottom:19px; /* padding has already 5px */
}
/* ... except between code cells! */
.nblast.container+ .nbinput.container {
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>
<divclass="section" id="module-5-odds-and-ends">
<h1>Module 5: Odds and Ends<aclass="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 <codeclass="code docutils literal notranslate"><spanclass="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 <codeclass="code docutils literal notranslate"><spanclass="pre">glob</span></code>, saving files with <codeclass="code docutils literal notranslate"><spanclass="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 <codeclass="code docutils literal notranslate"><spanclass="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 <codeclass="code docutils literal notranslate"><spanclass="pre">pip</span></code> and <codeclass="code docutils literal notranslate"><spanclass="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>
<divclass="toctree-wrapper compound">
<pclass="caption" role="heading"><spanclass="caption-text">Contents:</span></p>
<ul>
<liclass="toctree-l1"><aclass="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html">Writing Good Code</a><ul>
<liclass="toctree-l2"><aclass="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>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html#Type-Hinting">Type-Hinting</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html#Documentation-Styles">Documentation Styles</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html#Links-to-Official-Documentation">Links to Official Documentation</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Writing_Good_Code.html#Reading-Comprehension-Solutions">Reading Comprehension Solutions</a></li>
</ul>
</li>
<liclass="toctree-l1"><aclass="reference internal" href="Module5_OddsAndEnds/Matplotlib.html">Matplotlib</a><ul>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Plotting-in-Jupyter-Notebooks">Plotting in Jupyter Notebooks</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Creating-Figures-and-Axes-with-pyplot.subplots">Creating Figures and Axes with <codeclass="docutils literal notranslate"><spanclass="pre">pyplot.subplots</span></code></a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Displaying-Images">Displaying Images</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Beyond-Matplotlib">Beyond Matplotlib</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Links-to-Official-Documentation">Links to Official Documentation</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Matplotlib.html#Reading-Comprehension-Exercise-Solutions:">Reading Comprehension Exercise Solutions:</a></li>
</ul>
</li>
<liclass="toctree-l1"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html">Working with Files</a><ul>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Working-with-Paths">Working with Paths</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Opening-Files">Opening Files</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Example:-Writing-and-Reading-a-Text-File">Example: Writing and Reading a Text File</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Globbing-for-Files">Globbing for Files</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Saving-&-Loading-Python-Objects:-pickle">Saving & Loading Python Objects: pickle</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Saving-and-Loading-NumPy-Arrays">Saving and Loading NumPy Arrays</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Links-to-Official-Documentation">Links to Official Documentation</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/WorkingWithFiles.html#Reading-Comprehension-Solutions">Reading Comprehension Solutions</a></li>
</ul>
</li>
<liclass="toctree-l1"><aclass="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html">Import: Modules and Packages</a><ul>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Modules">Modules</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Import-Statements">Import Statements</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Packages">Packages</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Intra-Module-Imports">Intra-Module Imports</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Installing-a-Package">Installing a Package</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#pip-and-conda:-Package-Managers">pip and conda: Package Managers</a></li>
<liclass="toctree-l2"><aclass="reference internal" href="Module5_OddsAndEnds/Modules_and_Packages.html#Links-to-Official-Documentation">Links to Official Documentation</a></li>
<liclass="toctree-l2"><aclass="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><divclass="rst-footer-buttons" role="navigation" aria-label="Footer">
<ahref="Module4_OOP/Inheritance.html" class="btn btn-neutral float-left" title="Inheritance" accesskey="p" rel="prev"><spanclass="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<ahref="Module5_OddsAndEnds/Writing_Good_Code.html" class="btn btn-neutral float-right" title="Writing Good Code" accesskey="n" rel="next">Next <spanclass="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<divrole="contentinfo">
<p>© Copyright 2021, Ryan Soklaski.</p>
</div>
Built with <ahref="https://www.sphinx-doc.org/">Sphinx</a> using a
<ahref="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <ahref="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function(){
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>