在好例子网,分享、交流、成长!
您当前所在位置:首页Python 开发实例Python语言基础 → Luciano Ramalho - Fluent Python_ Clear, Concise, and Effective Programming (2015, O’Reilly Media).pdf

Luciano Ramalho - Fluent Python_ Clear, Concise, and Effective Programming (2015, O’Reilly Media).pdf

Python语言基础

下载此实例
  • 开发语言:Python
  • 实例大小:16.93M
  • 下载次数:6
  • 浏览次数:112
  • 发布时间:2020-09-21
  • 实例类别:Python语言基础
  • 发 布 人:wengwengpaoxiao
  • 文件格式:.pdf
  • 所需积分:2
 相关标签: python Fluent python en py

实例介绍

【实例简介】

经典书籍 fluent python

【实例截图】

from clipboard

【核心代码】

Table of Contents
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Part I. Prologue
1. The Python Data Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
A Pythonic Card Deck 4
How Special Methods Are Used 8
Emulating Numeric Types 9
String Representation 11
Arithmetic Operators 12
Boolean Value of a Custom Type 12
Overview of Special Methods 13
Why len Is Not a Method 14
Chapter Summary 14
Further Reading 15
Part II. Data Structures
2. An Array of Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Overview of Built-In Sequences 20
List Comprehensions and Generator Expressions 21
List Comprehensions and Readability 21
Listcomps Versus map and filter 23
Cartesian Products 23
Generator Expressions 25
Tuples Are Not Just Immutable Lists 26
Tuples as Records 26
Tuple Unpacking 27
v
Nested Tuple Unpacking 29
Named Tuples 30
Tuples as Immutable Lists 32
Slicing 33
Why Slices and Range Exclude the Last Item 33
Slice Objects 34
Multidimensional Slicing and Ellipsis 35
Assigning to Slices 36
Using   and * with Sequences 36
Building Lists of Lists 37
Augmented Assignment with Sequences 38
A  = Assignment Puzzler 40
list.sort and the sorted Built-In Function 42
Managing Ordered Sequences with bisect 44
Searching with bisect 44
Inserting with bisect.insort 47
When a List Is Not the Answer 48
Arrays 48
Memory Views 51
NumPy and SciPy 52
Deques and Other Queues 55
Chapter Summary 57
Further Reading 59
3. Dictionaries and Sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Generic Mapping Types 64
dict Comprehensions 66
Overview of Common Mapping Methods 66
Handling Missing Keys with setdefault 68
Mappings with Flexible Key Lookup 70
defaultdict: Another Take on Missing Keys 70
The __missing__ Method 72
Variations of dict 75
Subclassing UserDict 76
Immutable Mappings 77
Set Theory 79
set Literals 80
Set Comprehensions 81
Set Operations 82
dict and set Under the Hood 85
A Performance Experiment 85
Hash Tables in Dictionaries 87
vi | Table of Contents
Practical Consequences of How dict Works 90
How Sets Work—Practical Consequences 93
Chapter Summary 93
Further Reading 94
4. Text versus Bytes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Character Issues 98
Byte Essentials 99
Structs and Memory Views 102
Basic Encoders/Decoders 103
Understanding Encode/Decode Problems 105
Coping with UnicodeEncodeError 105
Coping with UnicodeDecodeError 106
SyntaxError When Loading Modules with Unexpected Encoding 108
How to Discover the Encoding of a Byte Sequence 109
BOM: A Useful Gremlin 110
Handling Text Files 111
Encoding Defaults: A Madhouse 114
Normalizing Unicode for Saner Comparisons 117
Case Folding 119
Utility Functions for Normalized Text Matching 120
Extreme “Normalization”: Taking Out Diacritics 121
Sorting Unicode Text 124
Sorting with the Unicode Collation Algorithm 126
The Unicode Database 127
Dual-Mode str and bytes APIs 129
str Versus bytes in Regular Expressions 129
str Versus bytes on os Functions 130
Chapter Summary 132
Further Reading 133
Part III. Functions as Objects
5. First-Class Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Treating a Function Like an Object 140
Higher-Order Functions 141
Modern Replacements for map, filter, and reduce 142
Anonymous Functions 143
The Seven Flavors of Callable Objects 144
User-Defined Callable Types 145
Function Introspection 146
Table of Contents | vii
From Positional to Keyword-Only Parameters 148
Retrieving Information About Parameters 150
Function Annotations 154
Packages for Functional Programming 156
The operator Module 156
Freezing Arguments with functools.partial 159
Chapter Summary 161
Further Reading 162
6. Design Patterns with First-Class Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Case Study: Refactoring Strategy 168
Classic Strategy 168
Function-Oriented Strategy 172
Choosing the Best Strategy: Simple Approach 175
Finding Strategies in a Module 176
Command 177
Chapter Summary 179
Further Reading 180
7. Function Decorators and Closures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Decorators 101 184
When Python Executes Decorators 185
Decorator-Enhanced Strategy Pattern 187
Variable Scope Rules 189
Closures 192
The nonlocal Declaration 195
Implementing a Simple Decorator 196
How It Works 198
Decorators in the Standard Library 199
Memoization with functools.lru_cache 200
Generic Functions with Single Dispatch 202
Stacked Decorators 205
Parameterized Decorators 206
A Parameterized Registration Decorator 206
The Parameterized Clock Decorator 209
Chapter Summary 211
Further Reading 212
viii | Table of Contents
Part IV. Object-Oriented Idioms
8. Object References, Mutability, and Recycling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Variables Are Not Boxes 220
Identity, Equality, and Aliases 221
Choosing Between == and is 223
The Relative Immutability of Tuples 224
Copies Are Shallow by Default 225
Deep and Shallow Copies of Arbitrary Objects 228
Function Parameters as References 229
Mutable Types as Parameter Defaults: Bad Idea 230
Defensive Programming with Mutable Parameters 232
del and Garbage Collection 234
Weak References 236
The WeakValueDictionary Skit 237
Limitations of Weak References 239
Tricks Python Plays with Immutables 240
Chapter Summary 242
Further Reading 243
9. A Pythonic Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Object Representations 248
Vector Class Redux 248
An Alternative Constructor 251
classmethod Versus staticmethod 252
Formatted Displays 253
A Hashable Vector2d 257
Private and “Protected” Attributes in Python 262
Saving Space with the __slots__ Class Attribute 264
The Problems with __slots__ 267
Overriding Class Attributes 267
Chapter Summary 269
Further Reading 271
10. Sequence Hacking, Hashing, and Slicing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Vector: A User-Defined Sequence Type 276
Vector Take #1: Vector2d Compatible 276
Protocols and Duck Typing 279
Vector Take #2: A Sliceable Sequence 280
How Slicing Works 281
A Slice-Aware __getitem__ 283
Vector Take #3: Dynamic Attribute Access 284
Table of Contents | ix
Vector Take #4: Hashing and a Faster == 288
Vector Take #5: Formatting 294
Chapter Summary 301
Further Reading 302
11. Interfaces: From Protocols to ABCs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Interfaces and Protocols in Python Culture 308
Python Digs Sequences 310
Monkey-Patching to Implement a Protocol at Runtime 312
Alex Martelli’s Waterfowl 314
Subclassing an ABC 319
ABCs in the Standard Library 321
ABCs in collections.abc 321
The Numbers Tower of ABCs 323
Defining and Using an ABC 324
ABC Syntax Details 328
Subclassing the Tombola ABC 329
A Virtual Subclass of Tombola 332
How the Tombola Subclasses Were Tested 335
Usage of register in Practice 338
Geese Can Behave as Ducks 338
Chapter Summary 340
Further Reading 342
12. Inheritance: For Good or For Worse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Subclassing Built-In Types Is Tricky 348
Multiple Inheritance and Method Resolution Order 351
Multiple Inheritance in the Real World 356
Coping with Multiple Inheritance 358
1. Distinguish Interface Inheritance from Implementation Inheritance 359
2. Make Interfaces Explicit with ABCs 359
3. Use Mixins for Code Reuse 359
4. Make Mixins Explicit by Naming 359
5. An ABC May Also Be a Mixin; The Reverse Is Not True 360
6. Don’t Subclass from More Than One Concrete Class 360
7. Provide Aggregate Classes to Users 360
8. “Favor Object Composition Over Class Inheritance.” 361
Tkinter: The Good, the Bad, and the Ugly 361
A Modern Example: Mixins in Django Generic Views 362
Chapter Summary 366
Further Reading 367
x | Table of Contents
13. Operator Overloading: Doing It Right. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Operator Overloading 101 372
Unary Operators 372
Overloading   for Vector Addition 375
Overloading * for Scalar Multiplication 380
Rich Comparison Operators 384
Augmented Assignment Operators 388
Chapter Summary 392
Further Reading 393
Part V. Control Flow
14. Iterables, Iterators, and Generators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Sentence Take #1: A Sequence of Words 402
Why Sequences Are Iterable: The iter Function 404
Iterables Versus Iterators 405
Sentence Take #2: A Classic Iterator 409
Making Sentence an Iterator: Bad Idea 411
Sentence Take #3: A Generator Function 412
How a Generator Function Works 413
Sentence Take #4: A Lazy Implementation 416
Sentence Take #5: A Generator Expression 417
Generator Expressions: When to Use Them 419
Another Example: Arithmetic Progression Generator 420
Arithmetic Progression with itertools 423
Generator Functions in the Standard Library 424
New Syntax in Python 3.3: yield from 433
Iterable Reducing Functions 434
A Closer Look at the iter Function 436
Case Study: Generators in a Database Conversion Utility 437
Generators as Coroutines 439
Chapter Summary 439
Further Reading 440
15. Context Managers and else Blocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Do This, Then That: else Blocks Beyond if 448
Context Managers and with Blocks 450
The contextlib Utilities 454
Using @contextmanager 455
Chapter Summary 459
Further Reading 459
Table of Contents | xi
16. Coroutines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
How Coroutines Evolved from Generators 464
Basic Behavior of a Generator Used as a Coroutine 465
Example: Coroutine to Compute a Running Average 468
Decorators for Coroutine Priming 469
Coroutine Termination and Exception Handling 471
Returning a Value from a Coroutine 475
Using yield from 477
The Meaning of yield from 483
Use Case: Coroutines for Discrete Event Simulation 489
About Discrete Event Simulations 489
The Taxi Fleet Simulation 490
Chapter Summary 498
Further Reading 500
17. Concurrency with Futures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Example: Web Downloads in Three Styles 505
A Sequential Download Script 507
Downloading with concurrent.futures 509
Where Are the Futures? 511
Blocking I/O and the GIL 515
Launching Processes with concurrent.futures 515
Experimenting with Executor.map 517
Downloads with Progress Display and Error Handling 520
Error Handling in the flags2 Examples 525
Using futures.as_completed 527
Threading and Multiprocessing Alternatives 530
Chapter Summary 530
Further Reading 531
18. Concurrency with asyncio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
Thread Versus Coroutine: A Comparison 539
asyncio.Future: Nonblocking by Design 545
Yielding from Futures, Tasks, and Coroutines 546
Downloading with asyncio and aiohttp 548
Running Circling Around Blocking Calls 552
Enhancing the asyncio downloader Script 554
Using asyncio.as_completed 555
Using an Executor to Avoid Blocking the Event Loop 560
From Callbacks to Futures and Coroutines 562
Doing Multiple Requests for Each Download 564
Writing asyncio Servers 567
xii | Table of Contents
An asyncio TCP Server 568
An aiohttp Web Server 573
Smarter Clients for Better Concurrency 576
Chapter Summary 577
Further Reading 579
Part VI. Metaprogramming
19. Dynamic Attributes and Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Data Wrangling with Dynamic Attributes 586
Exploring JSON-Like Data with Dynamic Attributes 588
The Invalid Attribute Name Problem 591
Flexible Object Creation with __new__ 592
Restructuring the OSCON Feed with shelve 594
Linked Record Retrieval with Properties 598
Using a Property for Attribute Validation 604
LineItem Take #1: Class for an Item in an Order 604
LineItem Take #2: A Validating Property 605
A Proper Look at Properties 606
Properties Override Instance Attributes 608
Property Documentation 610
Coding a Property Factory 611
Handling Attribute Deletion 614
Essential Attributes and Functions for Attribute Handling 616
Special Attributes that Affect Attribute Handling 616
Built-In Functions for Attribute Handling 616
Special Methods for Attribute Handling 617
Chapter Summary 619
Further Reading 619
20. Attribute Descriptors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Descriptor Example: Attribute Validation 625
LineItem Take #3: A Simple Descriptor 626
LineItem Take #4: Automatic Storage Attribute Names 631
LineItem Take #5: A New Descriptor Type 637
Overriding Versus Nonoverriding Descriptors 640
Overriding Descriptor 642
Overriding Descriptor Without __get__ 643
Nonoverriding Descriptor 644
Overwriting a Descriptor in the Class 645
Methods Are Descriptors 646
Table of Contents | xiii
Descriptor Usage Tips 648
Descriptor docstring and Overriding Deletion 650
Chapter Summary 651
Further Reading 651
21. Class Metaprogramming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
A Class Factory 656
A Class Decorator for Customizing Descriptors 659
What Happens When: Import Time Versus Runtime 661
The Evaluation Time Exercises 662
Metaclasses 101 666
The Metaclass Evaluation Time Exercise 669
A Metaclass for Customizing Descriptors 673
The Metaclass __prepare__ Special Method 675
Classes as Objects 677
Chapter Summary 678
Further Reading 679
Afterword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
A. Support Scripts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Python Jargon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725

标签: python Fluent python en py

实例下载地址

Luciano Ramalho - Fluent Python_ Clear, Concise, and Effective Programming (2015, O’Reilly Media).pdf

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警