Better Python Code without Common Pitfalls, 1st edition
BRAND: PEARSON
eBook edition. 1 year Subscription. Dành cho Cá nhân | Trường ĐH, Nhóm, Thư Viện: Gọi 0915920514 để báo giá Pearson, Vital Source eBook hoặc mua Sách In
Tổng quan sách
Python là một trong những ngôn ngữ lập trình được sử dụng rộng rãi nhất trên thế giới. Nó được sử dụng ở mọi nơi, từ giáo dục tiểu học đến phát triển web hàng ngày cho đến các viện nghiên cứu khoa học tiên tiến nhất trên thế giới. Tuy nhiên, giống như tất cả các ngôn ngữ lập trình, Python có một bộ sưu tập các cách hoàn thành nhiệm vụ "Pythonic" rất dễ bị bỏ qua, đặc biệt khi thói quen được vay mượn từ công việc trong các ngôn ngữ lập trình khác.Better Python Code là hướng dẫn lập trình Pythonic. Cuốn sách trình bày những lỗi phổ biến mà các nhà phát triển Python mắc phải - ngay cả những nhà phát triển Python đã sử dụng ngôn ngữ này trong nhiều năm - thường là do Python đôi khi gây ra "những phiền toái hấp dẫn". Xuyên suốt cuốn sách là hướng dẫn để lập trình tốt hơn bằng ngôn ngữ Python cốt lõi.Mỗi phần đưa ra một ví dụ cụ thể nhưng ngắn gọn về một số hiểu lầm hoặc thói quen xấu trong hành động. Mỗi phần chứa mô tả về lỗi xảy ra với mã mẫu và gợi ý về một hoặc nhiều cách tốt hơn để mã hóa chức năng tương đương mà không gặp phải sai sót ban đầu. Mọi cạm bẫy được đề cập trong cuốn sách này đều phản ánh những điểm yếu, sai sót và hiểu lầm mà tác giả đã thấy trong các cơ sở mã cụ thể, được sử dụng rộng rãi được viết bởi các nhà phát triển có kinh nghiệm trong hơn 25 năm viết Python của ông.Cả những người mới bắt đầu và những nhà phát triển có hàng chục năm kinh nghiệm sẽ học cách khắc phục những hạn chế trong mã họ viết sau khi suy ngẫm về những cuộc thảo luận này.
- Foreword xviiPreface xixAcknowledgments xxvAbout the Author xxviiIntroduction 1
- Chapter 1: Looping Over the Wrong Things 31.1 (Rarely) Generate a List for Iteration 31.2 Use enumerate() Instead of Looping Over an Index 61.3 Don't Iterate Over dict.keys() When You Want dict.items() 81.4 Mutating an Object During Iteration 91.5 for Loops Are More Idiomatic Than while Loops 121.6 The Walrus Operator for "Loop-and-a-Half" Blocks 131.7 zip() Simplifies Using Multiple Iterables 151.8 zip(strict=True) and itertools.zip_longest() 171.9 Wrapping Up 20
- Chapter 2: Confusing Equality with Identity 212.1 Late Binding of Closures 212.2 Overchecking for Boolean Values 252.3 Comparing x == None 282.4 Misunderstanding Mutable Default Arguments 292.5 Copies versus References to Mutable Objects 332.6 Confusing is with == (in the Presence of Interning) 352.7 Wrapping Up 37
- Chapter 3: A Grab Bag of Python Gotchas 393.1 Naming Things 393.2 Quadratic Behavior of Naive String Concatenation 523.3 Use a Context Manager to Open a File 563.4 Optional Argument key to .sort() and sorted() 593.5 Use dict.get() for Uncertain Keys 623.6 Wrapping Up 64
- Chapter 4: Advanced Python Usage 674.1 Comparing type(x) == type(y) 674.2 Naming Things (Revisited) 714.3 Keep Less-Used Features in Mind 794.4 Type Annotations Are Not Runtime Types 984.5 Wrapping Up 105
- Chapter 5: Just Because You Can, It Doesn't Mean You Should... 1075.1 Metaclasses 1075.2 Monkeypatching 1125.3 Getters and Setters 1155.4 It's Easier to Ask for Forgiveness Than Permission 1185.5 Structural Pattern Matching 1215.6 Regular Expressions and Catastrophic Backtracking 1235.7 Wrapping Up 126
- Chapter 6: Picking the Right Data Structure 1296.1 collections.defaultdict 1296.2 collections.Counter 1326.3 collections.deque 1356.4 collections.ChainMap 1386.5 Dataclasses and Namedtuples 1416.6 Efficient Concrete Sequences 1466.7 Wrapping Up 150
- Chapter 7: Misusing Data Structures 1537.1 Quadratic Behavior of Repeated List Search 1537.2 Deleting or Adding Elements to the Middle of a List 1577.3 Strings Are Iterables of Strings 1637.4 (Often) Use enum Rather Than CONSTANT 1667.5 Learn Less Common Dictionary Methods 1697.6 JSON Does Not Round-Trip Cleanly to Python 1747.7 Rolling Your Own Data Structures 1787.8 Wrapping Up 187
- Chapter 8: Security 1898.1 Kinds of Randomness 1908.2 Putting Passwords or Other Secrets in "Secure" Source Code 1958.3 "Rolling Your Own" Security Mechanisms 1988.4 Use SSL/TLS for Microservices 2018.5 Using the Third-Party requests Library 2058.6 SQL Injection Attacks When Not Using DB-API 2088.7 Don’t Use assert to Check Safety Assumptions 2128.8 Wrapping Up 215
- Chapter 9: Numeric Computation in Python 2179.1 Understanding IEEE-754 Floating Point Numbers 2179.2 Numeric Datatypes 2289.3 Wrapping Up 239Appendix: Topics for Other Books 241A.1 Test-Driven Development 241A.2 Concurrency 242A.3 Packaging 243A.4 Type Checking 243A.5 Numeric and Dataframe Libraries 244Index 245
