About This eBook
ePUB is an open, industry-standard format for eBooks. However, support of ePUB and its many features varies across reading devices and applications. Use your device or app settings to customize the presentation to your liking. Settings that you can customize often include font, font size, single or double column, landscape or portrait mode, and figures that you can click or tap to enlarge. For additional information about the settings and features on your reading device or app, visit the device manufacturers Web site.
Many titles include programming code or configuration examples. To optimize the presentation of these elements, view the eBook in single-column, landscape mode and adjust the font size to the smallest setting. In addition to presenting code and configurations in the reflowable text format, we have included images of the code that mimic the presentation found in the print book; therefore, where the reflowable format may compromise the presentation of the code listing, you will see a Click here to view code image link. Click the link to view the print-fidelity code image. To return to the previous page viewed, click the Back button on your device or app.
Effective Python
59 SPECIFIC WAYS TO WRITE BETTER PYTHON
Brett Slatkin
Upper Saddle River, NJ Boston Indianapolis San Francisco
New York Toronto Montreal London Munich Paris Madrid
Capetown Sydney Tokyo Singapore Mexico City
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals.
The author and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein.
For information about buying this title in bulk quantities, or for special sales opportunities (which may include electronic versions; custom cover designs; and content particular to your business, training goals, marketing focus, or branding interests), please contact our corporate sales department at or (800) 382-3419.
For government sales inquiries, please contact .
For questions about sales outside the United States, please contact .
Visit us on the Web: informit.com/aw
Library of Congress Cataloging-in-Publication Data
Slatkin, Brett, author.
Effective Python : 59 specific ways to write better Python / Brett Slatkin.
pages cm
Includes index.
ISBN 978-0-13-403428-7 (pbk. : alk. paper)ISBN 0-13-403428-7 (pbk. : alk. paper)
1. Python (Computer program language) 2. Computer programming. I. Title.
QA76.73.P98S57 2015
005.133dc23
2014048305
Copyright 2015 Pearson Education, Inc.
All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. To obtain permission to use material from this work, please submit a written request to Pearson Education, Inc., Permissions Department, One Lake Street, Upper Saddle River, New Jersey 07458, or you may fax your request to (201) 236-3290.
ISBN-13: 978-0-13-403428-7
ISBN-10: 0-13-403428-7
Text printed in the United States on recycled paper at RR Donnelley in
Crawfordsville, Indiana.
First printing, March 2015
Editor-in-Chief
Mark L. Taub
Senior Acquisitions Editor
Trina MacDonald
Managing Editor
John Fuller
Full-Service Production Manager
Julie B. Nahil
Copy Editor
Stephanie Geels
Indexer
Jack Lewis
Proofreader
Melissa Panagos
Technical Reviewers
Brett Cannon
Tavis Rudd
Mike Taylor
Editorial Assistant
Olivia Basegio
Cover Designer
Chuti Prasertsith
Compositor
LaurelTech
Praise for Effective Python
Each item in Slatkins Effective Python teaches a self-contained lesson with its own source code. This makes the book random-access: Items are easy to browse and study in whatever order the reader needs. I will be recommending Effective Python to students as an admirably compact source of mainstream advice on a very broad range of topics for the intermediate Python programmer.
Brandon Rhodes, software engineer at Dropbox and chair of PyCon 2016-2017
Ive been programming in Python for years and thought I knew it pretty well. Thanks to this treasure trove of tips and techniques, I realize theres so much more I could be doing with my Python code to make it faster (e.g., using built-in data structures), easier to read (e.g., enforcing keyword-only arguments), and much more Pythonic (e.g., using zip to iterate over lists in parallel).
Pamela Fox, educationeer, Khan Academy
If I had this book when I first switched from Java to Python, it would have saved me many months of repeated code rewrites, which happened each time I realized I was doing particular things non-Pythonically. This book collects the vast majority of basic Python must-knows into one place, eliminating the need to stumble upon them one-by-one over the course of months or years. The scope of the book is impressive, starting with the importance of PEP8 as well as that of major Python idioms, then reaching through function, method and class design, effective standard library use, quality API design, testing, and performance measurementthis book really has it all. A fantastic introduction to what it really means to be a Python programmer for both the novice and the experienced developer.
Mike Bayer, creator of SQLAlchemy
Effective Python will take your Python skills to the next level with clear guidelines for improving Python code style and function.
Leah Culver, developer advocate, Dropbox
This book is an exceptionally great resource for seasoned developers in other languages who are looking to quickly pick up Python and move beyond the basic language constructs into more Pythonic code. The organization of the book is clear, concise, and easy to digest, and each item and chapter can stand on its own as a meditation on a particular topic. The book covers the breadth of language constructs in pure Python without confusing the reader with the complexities of the broader Python ecosystem. For more seasoned developers the book provides in-depth examples of language constructs they may not have previously encountered, and provides examples of less commonly used language features. It is clear that the author is exceptionally facile with Python, and he uses his professional experience to alert the reader to common subtle bugs and common failure modes. Furthermore, the book does an excellent job of pointing out subtleties between Python 2.X and Python 3.X and could serve as a refresher course as one transitions between variants of Python.
Katherine Scott, software lead, Tempo Automation
This is a great book for both novice and experienced programmers. The code examples and explanations are well thought out and explained concisely and thoroughly.