Today is a free download without charge Download

Michael Driscoll - Python 201 [2016, PDF, ENG]

Reply to topic
 
Author
Message

Omen ®

Longevity: 8 years 4 months

Posts: 181087

Торрент-статистика

Post 21-Oct-2016 01:00

[Quote]

Python 201
Год издания: 2016
Автор: Michael Driscoll
Жанр или тематика: Intermediate Python
Издательство: Lean Publishing
Язык: Английский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Описание: Python 201 is the sequel to first book, Python 101. If you already know the basics of Python and now you want to go to the next level, then this is the book for you! This book is for intermediate level Python programmers only. There won't be any beginner chapters here. This book is based onPython 3.

Примеры страниц



Оглавление

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Reader Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Errata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Part I - The Intermediate Modules . . . . . . . . . . . . . . . . . 4
Chapter 1 - An Intro to Argument Parsing using
argparse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Adding Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Short Options and Long Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Options that Conflict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Chapter 2 - The collections module . . . . . . . . . . . . . . . . 10
ChainMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
defaultdict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
deque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
namedtuple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
OrderedDict . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Chapter 3 - Context Managers . . . . . . . . . . . . . . . . . . . . . 23
Creating a Context Manager class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Creating a Context Manager using contextlib . . . . . . . . . . . . . . . . . . . . . . . . 24
contextlib.closing(thing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
contextlib.suppress(*exceptions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
contextlib.redirect_stdout / redirect_stderr . . . . . . . . . . . . . . . . . . . . . . . . . . 27
ExitStack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Reentrant Context Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Chapter 4 - The functools module . . . . . . . . . . . . . . . . . 30
Caching with functools.lru_cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
functool.partial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Function Overloading with functools.singledispatch . . . . . . . . . . . . . . . . . . . . . 34
functools.wraps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Wraps to the Rescue! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Chapter 5 - All About Imports . . . . . . . . . . . . . . . . . . . . . 40
Regular Imports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Using “from module import something” . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Relative Imports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Optional Imports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Local Imports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Import Pitfalls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Chapter 6 - The importlib Module . . . . . . . . . . . . . . . . . 49
Dynamic Imports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Module Import Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Import From Source File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
import_from_github_com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Chapter 7 - Iterators and Generators . . . . . . . . . . . . . . 54
Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Creating Your Own Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Chapter 8 - The itertools Module . . . . . . . . . . . . . . . . . . 61
The Infinite Iterators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Iterators That Terminate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
The Combinatoric Generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Chapter 9 - Regular Expressions . . . . . . . . . . . . . . . . . . . 76
The Matching Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Pattern Matching Using search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Escape Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Compiling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Compilation Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Finding Multiple Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Backslashes Are Complicated . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Chapter 10 - The typing Module . . . . . . . . . . . . . . . . . . . 84
Type Hints and Overloaded Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Part II - Odds and Ends . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Chapter 11 - Python Built-ins . . . . . . . . . . . . . . . . . . . . . . 90
any . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
enumerate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
eval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
zip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Chapter 12 - Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Encoding / Decoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Chapter 13 - Benchmarking . . . . . . . . . . . . . . . . . . . . . . . . 101
timeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Importing timeit for Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Use a decorator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Create a Timing Context Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
cProfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
line_profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
memory_profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
profilehooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Chapter 14 - Encryption and Cryptography . . . . . . . . 113
Hashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Key Derivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
PyCrypto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
The cryptography Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Chapter 15 - Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Basic SQL Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
adodbapi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
pyodbc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
pypyodbc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Object Relational Mappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Chapter 16 - The super built-in . . . . . . . . . . . . . . . . . . . . 130
Python 2 vs Python 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Method Resolution Order (MRO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Chapter 17 - Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
The Descriptor Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Calling a Descriptor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Descriptor Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Chapter 18 - Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Local Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Global Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
nonlocal Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Part III - Working with the Web . . . . . . . . . . . . . . . . . . . 147
Chapter 19 - Web Scraping . . . . . . . . . . . . . . . . . . . . . . . . 148
Tips for Scraping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Preparing to Scrape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
BeautifulSoup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Scrapy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Chapter 20 - Web APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Twitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Reddit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Wikipedia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Other API Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Chapter 21 - Working with FTP . . . . . . . . . . . . . . . . . . . . 165
Connecting to an FTP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Navigating Directories with ftplib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Downloading a File via FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Uploading Files to an FTP Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Chapter 22 - The urllib Module . . . . . . . . . . . . . . . . . . . . 170
urllib.request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
urllib.parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
urllib.robotparser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Part IV - Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Chapter 24 - The doctest Module . . . . . . . . . . . . . . . . . . 177
How it Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Check Your Test With a Text File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Option Flags and Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Chapter 24 - The unittest Module . . . . . . . . . . . . . . . . . . 183
A Simple Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Command-Line Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Creating a More Complex Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Creating Test Suites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
How to Skip Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Integrating with doctest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Chapter 25 - The mock Module . . . . . . . . . . . . . . . . . . . . 198
Simple Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Side Effects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Autospeccing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
The Patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Chapter 26 - An Intro to coverage.py . . . . . . . . . . . . . . 203
Additional Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Part V - Concurrency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Chapter 27 - The asyncio Module . . . . . . . . . . . . . . . . . . 211
Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
async and await . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
A Coroutine Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Scheduling Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Chapter 28 - The threading Module . . . . . . . . . . . . . . . . 218
Intro to threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Locks and Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Other Thread Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Thread Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
Chapter 29 - The multiprocessing Module . . . . . . . . . 231
Getting Started With Multiprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
The Pool Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Process Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Chapter 30 - The concurrent.futures Module . . . . . . . 239
Creating a Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Deadlocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Wrapping Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Доп. информация: Python 201 will be split into four parts:
• Part one will cover intermediate modules
• Part two will be on a variety of topics, such as unicode, generators and iterators
• Part three will cover web related tasks with Python (but not web frameworks)
• Part four is going to cover testing code
Let me spend a few moments explaining what each part has to offer. In part one, we will cover the
following intermediate modules and topics:
• argparse (Parsing command line arguments)
• collections (Replacements for Python’s standard containers, such as tuple, list and
dict)
• contextlib (Context Managers)
• functools (Partials, function overloading, etc)
• importing and importlib
• iterators and generators
• itertools (Creating your own iterators)
• Regular Expressions
• Type Hinting
In Part two, we will be learning what generators and iterators are as well as how they work. We’ll
also be looking at some of Python’s special functions, like map and filter. There will be a section on
Unicode, encoding and decoding strings, benchmarking and more in this section.
Other forum [Profile] [PM]
Display posts from previous:    
Reply to topic

The time now is: Today 18:57

All times are GMT + 3 Hours



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum