Python Essentials - Steven F. Lott - E-Book

Python Essentials E-Book

Steven F. Lott

0,0
32,39 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

This book is designed for Python 2 developers who want to get to grips with Python 3 in a short period of time. It covers the key features of Python, assuming you are familiar with the fundamentals of Python 2.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB
MOBI

Seitenzahl: 448

Veröffentlichungsjahr: 2015

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Python Essentials
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why subscribe?
Free access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Getting Started
Installation or upgrade
Installing Python on Windows
Considering some alternatives
Upgrading to Python 3.4 in Mac OS X
Adding the Tkinter package
Upgrading to Python 3.4 in Linux
Using the Read-Evaluate-Print Loop (REPL)
Confirming that things are working
Doing simple arithmetic
Assigning results to variables
Using import to add features
Interacting with the help subsystem
Using the pydoc program
Creating simple script files
Simplified syntax rules
The Python ecosystem
The idea of extensibility via add-ons
Using the Python Package Index – PyPI
Using pip to gather modules
Using easy_install to add modules
Installing modules manually
Looking at other Python interpreters
Summary
2. Simple Data Types
Introducing the built-in operators
Making comparisons
Using integers
Using the bit-oriented operators
Using rational numbers
Using decimal numbers
Using floating-point numbers
Using complex numbers
The numeric tower
The math libraries
Using bits and Boolean values
Working with sequences
Slicing and dicing a sequence
Using string and bytes values
Writing string literals
Using raw string literals
Using byte string literals
Using the string operators
Converting between Unicode and bytes
Using string methods
Accessing the details of a string
Parsing strings into substrings
Using the tuple collection
The None object
The consequences of immutability
Using the built-in conversion functions
Summary
3. Expressions and Output
Expressions, operators, and data types
Using operators on non-numeric data
The print() function
Examining syntax rules
Splitting, partitioning, and joining strings
Using the format() method to make more readable output
Summary of the standard string libraries
Using the re module to parse strings
Using regular expressions
Creating a regular expression string
Working with Unicode, ASCII, and bytes
Using the locale module for personalization
Summary
4. Variables, Assignment and Scoping Rules
Simple assignment and variables
Multiple assignment
Using repeated assignment
Using the head, *tail assignment
Augmented assignment
The input() function
Python language concepts
Object types versus variable declarations
Avoiding confusion when naming variables
Garbage collection via reference counting
The little-used del statement
The Python namespace concept
Globals and locals
Summary
5. Logic, Comparisons, and Conditions
Boolean data and the bool() function
Comparison operators
Combining comparisons to simplify the logic
Testing float values
Comparing object IDs with the is operator
Equality and object hash values
Logic operators – and, or, not, if-else
Short-circuit (or non-strict) evaluation
The if-elif-else statement
Adding elif clauses
The pass statement as a placeholder
The assert statement
The logic of the None object
Summary
6. More Complex Data Types
The mutability and immutability distinction
Using the list collection
Using list operators
Mutating a list with subscripts
Mutating a list with method functions
Accessing a list
Using collection functions
Using the set collection
Using set operators
Mutating a set with method functions
Using augmented assignment with sets
Accessing a set with operators and method functions
Mappings
Using dictionary operators
Using dictionary mutators
Using methods for accessing items in a mapping
Using extensions from the collections module
Processing collections with the for statement
Using literal lists in a for statement
Using the range() and enumerate() functions
Iterating with the while statement
The continue and break statements
Breaking early from a loop
Using the else clause on a loop
Summary
7. Basic Function Definitions
Looking at the five kinds of callables
Defining functions with positional parameters
Defining multiple parameters
Using the return statement
Evaluating a function with positional or keyword arguments
Writing a function's docstring
Mutable and immutable argument values
Defining optional parameters via default values
A warning about mutable default values
Using the "everything else" notations of * and **
Using sequences and dictionaries to fill in *args and *kw
Nested function definitions
Working with namespaces
Assigning a global variable
Assigning a non-local variable
Defining lambdas
Writing additional function annotations
Summary
8. More Advanced Functions
Using the for statement with iterable collections
Iterators and iterable collections
Consequences and next steps
Using generator expressions and comprehensions
Limitations of generator expressions
Using multiple loops and conditions
Writing comprehensions
Defining generator functions with the yield statement
Using the higher-order functions
Writing our own higher-order functions
Using the built-in reductions – max, min, and reduce
Three ways to sort a sequence
Sorting via a key function
Sorting via wrapping and unwrapping
Functional programming design patterns
Summary
9. Exceptions
The core exception concept
Examining the exception object
Using the try and except statements
Using nested try statements
Matching exception classes in an except clause
Matching more general exceptions
The empty except clause
Creating our own exceptions
Using a finally clause
Use cases for exceptions
Issuing warnings instead of exceptions
Permission versus forgiveness – a Pythonic approach
Summary
10. Files, Databases, Networks, and Contexts
The essential file concept
Opening text files
Filtering text lines
Working with raw bytes
Using file-like objects
Using a context manager via the with statement
Closing file-like objects with contextlib
Using the shelve module as a database
Using the sqlite database
Using object-relational mapping
Web services and Internet protocols
Physical format considerations
Summary
11. Class Definitions
Creating a class
Writing the suite of statements in a class
Using instance variables and methods
Pythonic object-oriented programming
Trying to do type casting
Designing for encapsulation and privacy
Using properties
Using inheritance to simplify class definitions
Using multiple inheritance and the mixin design pattern
Using class methods and attributes
Using mutable class variables
Writing static methods
Using __slots__ to save storage
The ABCs of abstract base classes
Writing a callable class
Summary
12. Scripts, Modules, Packages, Libraries, and Applications
Script file rules
Running a script by the filename
Running a script by its module name
Running a script using OS shell rules
Choosing good script names
Creating a reusable module
Creating a hybrid library/application module
Creating a package
Designing alternative implementations
Seeing the package search path
Summary
13. Metaprogramming and Decorators
Simple metaprogramming with decorators
Defining our own decorator
More complex metaprogramming with metaclasses
Summary
14. Fit and Finish – Unit Testing, Packaging, and Documentation
Writing docstrings
Writing unit tests with doctest
Using the unittest library for testing
Combining doctest and unittest
Using other add-on test libraries
Logging events and conditions
Configuring the logging system
Writing documentation with RST markup
Creating HTML documentation from an RST source
Using the Sphinx tool
Organizing Python code
Summary
15. Next Steps
Leveraging the standard library
Leveraging PyPI – the Python Package Index
Types of applications
Building CLI applications
Getting command-line arguments with argparse
Using the cmd module for interactive applications
Building GUI applications
Using more sophisticated packages
Building web applications
Using a web framework
Building a RESTful web service with Flask
Plugging into a MapReduce framework
Summary
Index

Python Essentials

Python Essentials

Copyright © 2015 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: June 2015

Production reference: 1250615

Published by Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK.

ISBN 978-1-78439-034-1

www.packtpub.com

Credits

Author

Steven F. Lott

Reviewers

Amoatey Harrison

Alessio Di Lorenzo

Dr. Philip Polstra

Commissioning Editor

Edward Gordon

Acquisition Editor

Subho Gupta

Content Development Editor

Adrian Raposo

Technical Editors

Dhiraj Chandanshive

Siddhi Rane

Copy Editors

Samantha Lyon

Kevin McGowan

Aditya Nair

Rashmi Sawant

Project Coordinator

Kinjal Bari

Proofreader

Safis Editing

Indexer

Priya Sane

Graphics

Sheetal Aute

Production Coordinator

Komal Ramchandani

Cover Work

Komal Ramchandani

About the Author

Steven F. Lott has been programming since the 70s, when computers were large, expensive, and rare. As a contract software developer and architect, he has worked on hundreds of projects, from very small to very large. He's been using Python to solve business problems for over 10 years.

He's particularly adept at struggling with thorny data representation problems.

He has also authored Mastering Object-oriented Python by Packt Publishing.

He is currently a technomad who lives in various places on the east coast of the US. His technology blog can be found at http://slott-softwarearchitect.blogspot.com.

About the Reviewers

Amoatey Harrison is a Python programmer with a passion for building software systems to solve problems. When he is not programming, he plays video games, swims, or simply hangs out with friends.

After graduating from the Kwame Nkrumah University of Science and Technology with a degree in computer engineering, he is currently doing his national service at the GCB Bank head office in Accra, Ghana. He also helped review a book on Python programming, Functional Python Programming,Packt Publishing, which was published in January 2015.

He would like to think of himself as a cool nerd.

Alessio Di Lorenzo is a marine biologist and has an MSc in geographical information systems (GIS) and remote sensing. Since 2006, he has been dealing with the analysis and development of GIS applications dedicated to the study and spread of environmental and epidemiological data. He is experienced in the use of the main proprietary and open source GIS software and programming languages.

He has coauthored OpenLayers Starter and reviewed ArcPy and ArcGIS – Geospatial Analysis with Python, both by Packt Publishing.

Dr. Philip Polstra (known as Dr. Phil to his friends) is an associate professor of digital forensics in the Department of Math and Digital Sciences at Bloomsburg University of Pennsylvania. He teaches forensics, information security, and penetration testing. His research over the last few years has been on the use of microcontrollers and small computer boards (such as the BeagleBone Black) for forensics and penetration testing.

He is an internationally recognized hardware hacker. His work has been presented at numerous conferences across the globe, including repeat performances at Black Hat, DEFCON, 44CON, B-sides, GrrCON, ForenSecure, and other top conferences. He has also provided training on forensics and security, both in person and online via http://www.pentesteracademy.com and other training sites.

He has published a number of books, including Hacking and Penetration Testing with Low Power Devices, Syngress, and Linux Forensics from A to Z, PAP. He has also been a technical editor or reviewer on numerous books.

When not teaching or speaking at a conference, he is known to build electronics with his children, fly airplanes, and also teach others how to fly and build airplanes. His latest happenings can be found on his blog at http://philpolstra.com.

www.PacktPub.com

Support files, eBooks, discount offers, and more

For support files and downloads related to your book, please visit www.PacktPub.com.

Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at <[email protected]> for more details.

At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.

https://www2.packtpub.com/books/subscription/packtlib

Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.

Why subscribe?

Fully searchable across every book published by PacktCopy and paste, print, and bookmark contentOn demand and accessible via a web browser

Free access for Packt account holders

If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.

Preface

Python programming should be expressive and elegant. In order for this to be true, the language itself must be easy to learn and easy to use. Any practical language—and its associated libraries—can present a daunting volume of information. In order to help someone learn Python, we've identified and described those features that seem essential.

Learning a language can be a long voyage. We'll pass numerous islands, archipelagos, inlets, and estuaries along the route. Our objective is to point out the key features that will be passed during the initial stages of this journey.

The concepts of data structures and algorithms are ever-present considerations in programming. Our overall approach is to introduce the various Python data structures first. As part of working with a given class of objects, the language statements are introduced later. One of Python's significant advantages over other languages is the rich collection of built-in data types. Selecting an appropriate representation of data can lead to elegant, high-performance applications.

An essential aspect of Python is its overall simplicity. There are very few operators and very few different kinds of statements. Much of the code we write can be generic with respect to the underlying data type. This allows us to easily exchange different data structure implementations as part of making tradeoffs between storage, performance, accuracy, and other considerations.

Some subject areas could take us well beyond the basics. Python's object-oriented programming features are rich enough to easily fill several large volumes. If we're also interested in functional programming features, we can study these in far more depth elsewhere. We'll touch only briefly on these subjects.

What this book covers

Chapter 1, Getting Started, addresses installing or upgrading Python. We explore Python's Read-Evaluate-Print Loop (REPL) as a way to interact with the language. We'll use this interactive Python mode as a way to explore most of the language features.

Chapter 2, Simple Data Types, introduces a few features concerning numbers and some simple collections. We'll look at Python's Unicode strings as well as byte strings, including some of the conversions between strings and numbers.

Chapter 3, Expressions and Output, provides more details on Python expression syntax and how the various numeric types relate to each other. We'll look at the coercion rules and the numeric tower. We'll look at the print() function, which is a common tool for looking at output.

Chapter 4, Variables, Assignment and Scoping Rules, shows how we assign names to objects. We look at a number of different assignment statements available in Python. We also explore the input() function, which parallels the print() function.

Chapter 5, Logic, Comparisons, and Conditions, shows the logical operators and literals that Python uses. We'll look at the comparison operators and how we use them. We'll look closely at the if statement.

Chapter 6, More Complex Data Types, shows the core features of the list, set, and dict built-in types. We use the for statement to work with these collections. We also use functions such as sum(), map(), and filter().

Chapter 7, Basic Function Definitions, introduces the syntax for the def statement as well as the return statement. Python offers a wide variety of ways to provide argument values to functions; we show a few of the alternatives.

Chapter 8, More Advanced Functions, extends the basic function definitions to include the yield statement. This allows us to write generator functions that will iterate over a sequence of data values. We look at a few functional programming features available via built-in functions as well as the modules in the Python Standard Library.

Chapter 9, Exceptions, shows how we handle and raise exceptions. This allows us to write programs which are considerably more flexible. A simple "happy path" can handle the bulk of the processing, and exception clauses can handle rare or unexpected alternative paths.

Chapter 10, Files, Databases, Networks, and Contexts, will introduce a number of features related to persistent storage. We'll look at Python's use of files and file-like objects. We'll also extend the concept of persistence to include some database features available in the Python Standard Library. This chapter will also include a review of the with statement for context management.

Chapter 11, Class Definitions, demonstrates the class statement and the essentials of object-oriented programming. We look at the basics of inheritance and how to define class-level (static) methods.

Chapter 12, Scripts, Modules, Packages, Libraries, and Applications, shows different ways in which we can create Python code files. We'll look at the formal structures of script, module, and package. We'll also look at informal concepts such as application, library, and framework.

Chapter 13, Metaprogramming and Decorators, introduces two concepts that can help us write Python code that manipulates Python code. Python makes metaprogramming relatively simple; we can leverage this to simplify certain types of programming where a common aspect doesn't fit neatly into a class hierarchy or library of functions.

Chapter 14, Fit and Finish – Unit Testing, Packaging, and Documentation, moves beyond the Python language into the idea of creating a complete, polished product. Any well-written program should include test cases and documentation. We show common ways to make sure this is done properly.

Chapter 15, Next Steps, will demonstrate four simple kinds of applications. We'll look at the command-line interface (CLI), graphic user interface (GUI), simple Web frameworks, as well as MapReduce applications.

What you need for this book

We're going to focus on Python 3, exclusively. Many computers will have Python 2 already installed, which means an upgrade is required. Some computers don't have Python installed at all, which means that a fresh installation of Python 3 will be necessary. The details are the subject of Chapter 1, Getting Started.

It's important to note that Python 2 can't easily be used to run all of the examples. Python 2 may work for many of the examples, but it's not our focus.

In order to install software, you'll generally need administrative rights on the computer you intend to use. For a home computer, this is generally true. For computers supplied through work or school, administrative passwords may be required.

You may also want to have a proper programmer's text editor. Default text editing applications such as Windows Notepad or Mac OS X TextEdit can be used, but aren't ideal. There are numerous free text editors available: feel free to download several to locate the one that feels most comfortable for you.

Who this book is for

This book is for programmers who want to learn Python quickly. It shows key features of Python, assuming a background in programming. The focus is on essential features: the approach is broad but relatively shallow. We'll provide pointers and direction for additional study and research, assuming that the reader is willing and able to follow those pointers.

In many data-intensive industries, a great deal of big data analysis is done with Python and toolsets such as Apache Hadoop. In this case, the users of Python will be statisticians, data scientists, or analysts. Their interest isn't in Python itself, but in using Python to process collections of data. This book is designed to provide language fundamentals for data scientists.

This book can be used by students who are learning Python. Since this book doesn't cover the computer science foundations of programming, an additional text would be helpful.

Conventions

In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.

Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: "We've built an ArgumentParser method using all of the default parameters."

A block of code is set as follows:

def prod(sequence): p= 1 for item in sequence: p *= item return p

When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:

def prod(sequence): p= 1 for item in sequence: p *= item return

Any command-line input or output is written as follows:

MacBookPro-SLott:Code slott$ python3 -m test_all

New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: "Clicking on Continue will step through the Read Me, License, Destination Select, and Installation Type windows."

Note

Warnings or important notes appear in a box like this.

Tip

Tips and tricks appear like this.

Reader feedback

Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.

To send us general feedback, simply e-mail <[email protected]>, and mention the book's title in the subject of your message.

If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.

Customer support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the example code

You can download the example code files from your account at http://www.packtpub.com for all the Packt Publishing books you have purchased. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.

Errata

Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.

To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.

Piracy

Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.

Please contact us at <[email protected]> with a link to the suspected pirated material.

We appreciate your help in protecting our authors and our ability to bring you valuable content.

Questions

If you have a problem with any aspect of this book, you can contact us at <[email protected]>, and we will do our best to address the problem.

Chapter 1. Getting Started

Python comes on some computers as part of the OS. On other computers, we'll need to add the Python program and related tools. The installation is pretty simple, but we'll review the details to be sure that everyone has a common foundation.

Once we have Python, we'll need to confirm that Python is present. In some cases, we'll have more than one version of Python available. We need to be sure that we're using Python 3.4 or newer. To confirm that Python's available, we'll do a few interactions at Python's >>> prompt.

To extend our foundation for the remaining chapters, we'll look at a few essential rules of Python syntax. This isn't complete, but it will help us write scripts and learn the language. After we've had more chances to work with simple and compound statements, the detailed syntax rules will make sense.

We'll also look at the Python "ecosystem", starting with the built-in standard library. We'll emphasize the standard library throughout this book for two reasons. First, it's immense—much of what we need is already on our computer. Second, and more important, studying this library is the best way to learn the finer points of Python programming.

Beyond the built-in library, we'll take a look at the Python Package Index (PyPI). If we can't find the right module in the standard library, the second place to look for extensions is PyPI—https://pypi.python.org.

Installation or upgrade

To work with Python on Windows, we must install Python. For Mac OS X and Linux, a version of Python is already present; we'll often want to add a newer version to the preinstalled Python.

There are two significantly different flavors of Python available:

Python 2.xPython 3.x

This book is about Python 3.4. We won't cover Python 2.x at all. There are several visible differences. What's important is that Python 2.x is a bit of a mess under the hood. Python 3 reflects some fundamental improvements. The improvements came at the cost of a few areas where the two versions of the language had to be made incompatible.

The Python community is continuing to keep Python 2.x around. Doing this is a help to people who are stuck with old software. For the most part, developers are moving forward with Python 3 because it's a clear improvement.

Before we get started, it's important to know if Python is already installed. The general test to see if Python is already installed is to get an OS command prompt. For Windows, use Command Prompt; for Mac OS X or Linux, use the Terminal tool. We'll show Mac OS X prompts from the Mac OS X Terminal. It looks like this:

MacBookPro-SLott:~ slott$ python3Python 3.3.4 (v3.3.4:7ff62415e426, Feb 9 2014, 00:29:34)[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwinType "help", "copyright", "credits" or "license" for more information.>>>

We've shown the OS prompt MacBookPro-SLott:~ slott$. We entered the python3 command, which is typical for Linux and Mac OS X. In Windows, we'll often enter just python. The response was three lines of introduction followed by the >>> prompt. Enter exit and hit return to get some useful advice on how to leave Python. This example showed Python 3.3, which is a little out of date. An upgrade isn't required.

Some kind of "command not found" error from the OS means we don't have any Python, so we'll need to do an install.

If we get a Python message that starts with something like "Python 2.7.6", we'll need to do an upgrade.

The next section covers Windows installations. After that, we'll look at Mac OS X and then we will see Linux upgrades. In some cases, we may develop software on Windows desktop computers, but the ultimate destination is a large, centralized Linux server. The Python files can be the same between these two environments, so having Python on multiple platforms won't be very complex or confusing.

Installing Python on Windows

Python runs on many versions of Windows. There are some older, less-widely-used versions of Windows without an actively supported version of Python. For example, Windows 2000 is not supported.

The general procedure for installing Python is quite simple. We'll download an installer and do some preparation. Then we'll start the installer. Once that's finished, we'll be up and running.

To find the installer, start here:

https://www.python.org/downloads/

The web server should detect your OS and provide a big button with some variation of "Download Python 3.4.x" on it. Click on this button to start the download.

To look at the choices available, the https://www.python.org/downloads/windows/ path provides all of the actively-supported versions of Python. This will show a long list of older versions. There are two installers available:

The Windows x86 MSI installerThe Windows x86-64 MSI installer

If we have a very old computer, we might need the 32-bit version. Most modern computers will have a 64-bit CPU. When in doubt, 64-bit is the assumption to make.

Double-click the .msi file to start running the installer. This starts with a question about installing Python for yourself or for all users. If you have appropriate privileges, the all users option is appropriate. On a shared computer, without appropriate privileges, you'll have to install it for yourself only.

The second page will ask for an installation directory. Be careful about the path that you choose for the installation, and avoid spaces in filenames.

Tip

Do not install Python into directories with spaces in their names. Avoid names such as "Program Files" and "My Documents". The space may cause problems that are difficult to diagnose.

Install Python into a simple directory with a short, space-free name like C:\python34.

Spaces in filenames is not a general problem, but it is awkward when first starting. There are many ways to cope with spaces in filenames. When learning a new programming language, however, it's important to minimize the awkward problems so that we can focus on the important topics.

The next page will also show a menu of components that can be installed; it's easiest to request everything. There's no compelling reason to turn off any of the optional components. We'll be looking at the IDLE development tool, which requires the Tcl/Tk package, so it's important to be sure that this is part of the installation.

In many cases, the final option on this list updates the system environment variables to include Python on the PATH variable. This isn't enabled by default, but it can be helpful if you're going to write BAT files in Windows.

In addition to the basic Python interpreter, the Windows help installer is very helpful. This is a separate download and requires a quick installation. After we've installed this, we can use the F1 key to bring up all of the Python documentation.

Once Python is installed, the Using the Read-Evaluate-Print Loop (REPL) section will show how to start interacting with Python.

Considering some alternatives

We'll focus on a particular implementation of Python called CPython. The distinction we're making here is that Python—the abstract language—can be processed by a variety of concrete Python runtimes or implementations. The CPython implementation is written in portable C and can be recompiled for many operating systems. This implementation tends to be extremely fast.

For Windows developers, there's an alternative implementation called Iron Python. This is tightly integrated with the Windows .NET development environment. It has the advantage of working with Visual Studio. It has the disadvantage of being based on the Python 2.7 language.

Another choice Windows users have is to use Python Tools for Visual Studio (PTVS). This will allow you to use Python 3.4 from within Visual Studio. For developers who are used to Visual Studio, this might prove helpful.

Other Python implementations include Jython, Stackless Python, and PyPy. These alternatives are available for all operating systems, so we'll address these in the Looking at other Python interpreters section later.

Upgrading to Python 3.4 in Mac OS X

Python runs on all versions of Mac OS X. It turns out that Mac OS X relies on Python. However, it relies on Python 2.7, so we'll need to add Python 3.4.

The general procedure for installing Python on Mac OS X is quite simple. We'll download a disk image (.dmg) installer and do some preparation. Then we'll start the installer that's in the disk image. Once that's finished, we'll be up and running.

To find an installer, start here:

https://www.python.org/downloads/

The web server should detect your OS and provide a big button with some variation of "Download Python 3.4.x" on it. Click on this and download the .dmg file.

To look at the choices available, the https://www.python.org/downloads/mac-osx/ path provides all of the actively-supported versions of Python for Mac OS X. This will show alternatives for older versions of Python.

When the .dmg device becomes available after the download, double-click on the .mpkg installer file to start running the installer.

Clicking on Continue will step through the Read Me, License, Destination Select, and Installation Type windows. There's a Customize button that allows us to turn options on and off. We won't need to do this—the default installation is ideal.

We'll need to provide the username and password of a user who's authorized to administer this computer. This will not remove the existing Python that Mac OS X uses. It will add another version of Python. This means that we'll have at least two copies of Python. We'll focus on using Python 3, ignoring the built-in Python, which is Python 2.

To use Python 3, we have to enter python3 at the OS prompt in the Terminal window. If we have both Python 3.3 and Python 3.4, we can enter the even more specific python3.4 at the command prompt to specify which version of Python 3 we're using. Generally, the python3 command will be the latest-and-greatest version of Python 3. The python command—unadorned with a version number—will be the Python 2.x that Mac OS X requires.

Adding the Tkinter package

Python relies on a library named Tkinter to provide support for writing programs with a GUI. This package relies on Tcl/Tk. The details can be found here:

https://www.python.org/download/mac/tcltk/

The summary of this is that we need to install version 8.5.17 or newer. See https://www.python.org/download/mac/tcltk/#activetcl-8-5-17-0. This will provide a graphic environment that Python will use. We must install Tcl/Tk in order for the tkinter package to work.

After we download the .dmg file and open the .pkg file, we'll see this window:

We'll be looking at the IDLE development tool, which requires tkinter. Consequently, this additional installation is essential.

We can avoid this extra download if we avoid using tkinter. Some developers prefer to use the Active State Komodo editor as their development tool; this does not require Tcl/Tk. Also, there are numerous add-on GUI frameworks that don't require tkinter.

Upgrading to Python 3.4 in Linux

For Linux, the latest Python may already be installed. When we enter python3, we may see that we already have a useful version available. In this case, we're ready to roll. In some cases, the OS will only have an older Python (perhaps older than 2.7) installed. In this case, we'll need to upgrade.

For Linux distributions, there are two paths for upgrading Python:

Installing prebuilt packages: Many distributions have appropriate packages already available. We can use a package manager (such as yum or RPM) to locate and install the necessary Python package. In some cases, there will be additional dependencies, leading to a cascade of downloads and installs. Since Python 3.4 is relatively new, there may not be very many prebuilt packages for your particular Linux distribution. Details are available at https://docs.python.org/3/using/unix.html#on-linux.Building from source: Most Linux distributions include the GNU C compiler. We can download the Python source, configure the build script, and use make and make install to build Python. This may require upgrading some Linux libraries to assure that your Linux installation has the required support for Python 3.4. The installation steps are summarized as ./configure, make, and sudo make altinstall. Details are available at https://docs.python.org/3/using/unix.html#building-python.

When we use altinstall, we'll end up with two Pythons installed. We'll have an older Python, which we can run using the python command. The python3 command will, generally, be linked to the latest version of Python 3. If we need to be explicit, we can use the python3.4 command to select a specific version.

As with the Mac OS X installation, adding the Python tkinter package is important. Sometimes, this is separate from the basic package. This may lead to upgrading Tcl/Tk, which may lead to some more downloads and installs. At other times, the Linux distribution has an up-to-date Tcl/Tk environment and nothing more needs to be done.

We can avoid the extra Tcl/Tk download if we avoid using tkinter. As mentioned earlier, many developers prefer to use the Active State Komodo editor as their development tool; this does not require tkinter. Also, there are numerous GUI frameworks that aren't based on tkinter.

Interacting with the help subsystem

Python's interactive help utility provides a great deal of useful information about modules, classes, functions, and objects. The help system is an environment that is distinct from Python's REPL; it provides distinct prompts to make this clear.

There are three help modes, each with its unique prompt:

We'll see the help> prompt from the Python help environment. When we evaluate the help() function with no argument value, we'll enter Python's help environment. We can enter different subjects and read about various Python features. When we enter quit as a topic, we'll return to the REPL.Using Windows, we'll see the -- More -- prompt: When we evaluate something like help(int) in a Windows environment, the output will be displayed using the MS-DOS more command. For more information, enter ? for help on how to page through the help() output. At the Windows command line, entering more /? will provide additional information on how the more command helps you page through a long file.Using Mac OS X and Linux, we'll see the : prompt. When we evaluate the help() function with a specific argument value—for example, help(float)—in Mac OS X or Linux, we'll get output that's displayed using the less program. For more information on this, enter h for help while viewing the help() output. At the command prompt, enter less -? for more information on how the less program works.

There are additional ways to view the documentation available with Python modules. In IDLE, for example, there's a class browser and path browser that will show documentation about modules and files. This is based on the built-in help() function, but it's displayed in a separate window.

Using the pydoc program

Python includes the pydoc application that we use to view documentation. This application is something that we run from the OS command prompt. We do not use this from the Python >>> prompt; we use it from the OS prompt. While developing, we might want to leave a Terminal window open just to display module documentation.

The pydoc program has two operating modes:

It can show some documentation about a specific package or module. This will use an appropriate program (more on Windows, but otherwise less) to display documentation for the given object. Here's how we can display documentation on the math module:
MacBookPro-SLott:~ slott$ python3 -m pydoc math
It can start a documentation web server. This will start a server (and also start a browser) to look at Python module documentation. When we use it, we'll have a session that looks like this:
MacBookPro-SLott:~ slott$ python3 -m pydoc -bServer ready at http://localhost:50177/Server commands: [b]rowser, [q]uitserver> qServer stopped

The second example will start a web server as well as a browser. The browser will show the pydoc-produced documentation. This is derived from the module and package structure as well as the documentation strings embedded in the Python code. When we were done reading the documentation, we entered q to quit the web server.

When we write Python packages, modules, classes, and functions, we can (and should) provide the content for pydoc/help() documentation. These documentation strings are part of our programming, and are as important as having programs that work correctly. We'll look at this embedded documentation in Chapter 14, Fit and Finish – Unit Testing, Packaging, and Documentation.