Python Tutorial
WHETTING YOUR APPETITE
If you do much work on computers, eventually you find that there’s some task you’d like to automate. For
example, you may wish to perform a search-and-replace over a large number of text files, or rename and
rearrange a bunch of photo files in a complicated way. Perhaps you’d like to write a small custom database,
or a specialized GUI application, or a simple game.
If you’re a professional software developer, you may have to work with several C/C++/Java libraries but
find the usual write/compile/test/re-compile cycle is too slow. Perhaps you’re writing a test suite for such
a library and find writing the testing code a tedious task. Or maybe you’ve written a program that could
use an extension language, and you don’t want to design and implement a whole new language for your
application.
Python is just the language for you.
You could write a Unix shell script or Windows batch files for some of these tasks, but shell scripts are best
at moving around files and changing text data, not well-suited for GUI applications or games. You could
write a C/C++/Java program, but it can take a lot of development time to get even a first-draft program.
Python is simpler to use, available on Windows, Mac OS X, and Unix operating systems, and will help you
get the job done more quickly.
Python is simple to use, but it is a real programming language, offering much more structure and support
for large programs than shell scripts or batch files can offer. On the other hand, Python also offers much
more error checking than C, and, being a very-high-level language, it has
high-level data types built in, such
as flexible arrays and dictionaries. Because of its more general data types Python is applicable to a much
larger problem domain than Awk or even Perl, yet many things are at least as easy in Python as in those
languages.
Python allows you to split your program into modules that can be reused in other Python programs. It
comes with a large collection of standard modules that you can use as the basis of your programs — or as
examples to start learning to program in Python. Some of these modules provide things like file I/O, system
calls, sockets, and even interfaces to graphical user interface toolkits like Tk.
Python is an interpreted language, which can save you considerable time during program development
because no compilation and linking is necessary. The interpreter can be used interactively, which makes it
easy to experiment with features of the language, to write throw-away programs, or to test functions during
bottom-up program development. It is also a handy desk calculator.
Python enables programs to be written compactly and readably. Programs written in Python are typically
much shorter than equivalent C, C++, or Java programs, for several reasons:
• the high-level data types allow you to express complex operations in a single statement;
•
statement grouping is done by indentation instead of beginning and ending brackets;
• no variable or argument declarations are necessary.
Python is extensible: if you know how to program in C it is easy to add a new built-in function or module
to the interpreter, either to perform critical operations at maximum speed, or to link Python programs to
libraries that may only be available in binary form (such as a vendor-specific graphics library). Once you
3
Python Tutorial, Release 3.7.0
are really hooked, you can link the Python interpreter into an application written in C and use it as an
extension or command language for that application.
By the way, the language is named after the BBC show “Monty Python’s Flying Circus” and has nothing
to do with reptiles. Making references to Monty Python skits in documentation is not only allowed, it is
encouraged!
Now that you are all excited about Python, you’ll want to examine it in some more detail. Since the best
way to learn a language is to use it, the tutorial invites you to play with the Python interpreter as you read.
In the next chapter, the mechanics of using the interpreter are explained. This is rather mundane information,
but essential for trying out the examples shown later.
The rest of the tutorial introduces various features of the Python language and system through examples,
beginning with simple expressions, statements and data types, through functions and modules, and finally
touching upon advanced concepts like exceptions and user-defined classes.
4 Chapter 1. Whetting Your Appetite
CHAPTER
TWO
If that doesn’t work, you can exit the interpreter by typing
the following command: quit().
The interpreter’s line-editing features include interactive editing, history substitution and code completion
on systems that support readline. Perhaps the quickest check to see whether command line editing is
supported is typing Control-P to the first Python prompt you get. If it beeps, you have command line
editing; see Appendix Interactive Input Editing and History Substitution for an introduction to the keys. If
nothing appears to happen, or if ^P is echoed, command line editing isn’t available; you’ll only be able to
use backspace to remove characters from the current line.
The interpreter operates somewhat like the Unix shell: when called with standard input connected to a tty
device, it reads and executes commands interactively; when called with a file name argument or with a file
as standard input, it reads and executes a script from that file.
A second way of starting the interpreter is python -c command [arg] ..., which executes the statement(s)
in command, analogous to the shell’s -c option. Since Python statements often contain spaces or other
characters that are special to the shell, it is usually advised to quote command in its entirety with single
quotes.
Some Python modules are also useful as scripts. These can be invoked using python -m module [arg] ...,
which executes the source file for module as if you had spelled out its full name on the command line.
When a script file is used, it is sometimes useful to be able to run the script and enter interactive mode
afterwards. This can be done by passing -i before the script.
1 On Unix, the Python 3.x interpreter is by default not installed with the executable named python, so that it does not
conflict with a simultaneously installed Python 2.x executable.
5
Python Tutorial, Release 3.7.0
All command line options are described in using-on-general.
2.1.1 Argument Passing
When known to the interpreter, the script name and additional arguments thereafter are turned into a list
of strings and assigned to the argv variable in the sys module. You can access this list by executing import
sys. The length of the list is at least one; when no script and no arguments are given, sys.argv[0] is an
empty string. When the script name is given as '-' (meaning standard input),
sys.argv[0] is set to '-'.
When -c command is used, sys.argv[0] is set to '-c'. When -m module is used, sys.argv[0] is set to
the full name of the located module. Options found after -c command or -m module are not consumed by
the Python interpreter’s option processing but left in sys.argv for the command or module to handle.
2.1.2 Interactive Mode
When commands are read from a tty, the interpreter is said to be in interactive mode. In this mode it prompts
for the next command with the primary prompt, usually three greater-than signs (>>>); for continuation lines
it prompts with the secondary prompt, by default three dots (...). The interpreter prints a welcome message
stating its version number and a copyright notice before printing the first prompt:
$ python3.7
Python 3.7 (default, Sep 16 2015, 09:25:04)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Continuation lines are needed when entering a multi-line construct. As an example, take a look at this if
statement:
>>> the_world_is_flat = True
>>> if the_world_is_flat:
... print("Be careful not to fall off
string literals, identifiers and comments — although
the standard library only uses ASCII characters for identifiers, a convention that any portable code should
follow. To display all these characters properly, your editor must recognize that the file is UTF-8, and it
must use a font that supports all the characters in the file.
To declare an encoding other than the default one, a special comment line should be added as the first line
of the file. The syntax is as follows:
# -*- coding: encoding -*-
where encoding is one of the valid codecs supported by Python.
6 Chapter 2. Using the Python Interpreter
Python Tutorial, Release 3.7.0
For example, to declare that Windows-1252 encoding is to be used, the first line of your source code file
should be:
# -*- coding: cp1252 -*-
One exception to the first line rule is when the source code starts with a UNIX “shebang” line. In this case,
the encoding declaration should be added as the second line of the file. For example:
#!/usr/bin/env python3
# -*- coding: cp1252 -*-
2.2. The Interpreter and Its Environment 7
Python Tutorial, Release 3.7.0
8 Chapter 2. Using the Python Interpreter
A
comment may appear at the start of a line or following whitespace or code, but not within a string literal.
A hash character within a string literal is just a hash character. Since comments are to clarify code and are
not interpreted by Python, they may be omitted when typing in examples.
Some examples:
# this is the first comment
spam = 1 # and this is the second comment
# ... and now a third!
text = "# This is not a comment because it's inside quotes."
3.1 Using Python as a Calculator
Let’s try some simple Python commands. Start the interpreter and wait for the primary prompt, >>>. (It
shouldn’t take long.)
3.1.1 Numbers
The interpreter acts as a simple calculator: you can type an expression at it and it will write the value.
Expression syntax is straightforward: the operators +, -, * and / work just like in most other languages (for
example, Pascal or C); parentheses (()) can be used for grouping. For example:
>>> 2 + 2
4
>>> 50 - 5*6
20
>>> (50 - 5*6) / 4
5.0
>>> 8 / 5 # division always returns a floating point number
1.6
The integer numbers (e.g. 2, 4, 20) have type int, the ones with a fractional part (e.g. 5.0, 1.6) have type
float. We will see more about numeric types later in the tutorial.
9
Python Tutorial, Release 3.7.0
Division (/) always returns a float. To do floor division and get an integer result (discarding any fractional
result) you can use the // operator; to calculate the remainder you can use %:
>>> 17 / 3 # classic division returns a float
5.666666666666667
>>>
>>> 17 // 3 # floor division discards the fractional part
5
>>> 17 % 3 # the % operator returns the remainder of the division
2
>>> 5 * 3 + 2 # result * divisor + remainder
17
With Python, it is possible to use the ** operator to calculate
powers1:
>>> 5 ** 2 # 5 squared
25
>>> 2 ** 7 # 2 to the power of 7
128
The equal sign (=) is used to assign a value to a variable. Afterwards, no result is displayed before the next
interactive prompt:
>>> width = 20
>>> height = 5 * 9
>>> width * height
900
If a variable is not “defined” (assigned a value), trying to use it will give you an error:
>>> n # try to access an undefined variable
Traceback (most recent call last):
File "", line 1, in
NameError: name 'n' is not defined
There is full support for floating point; operators with mixed type operands convert the integer operand to
floating point:
>>> 4 * 3.75 - 1
14.0
In interactive mode, the last printed expression is assigned to the variable _. This means that when you are
using Python as a desk calculator, it is somewhat easier to continue calculations, for example:
>>> tax = 12.5 / 100
>>> price = 100.50
>>> price * tax
12.5625
>>> price + _
113.0625
>>> round(_, 2)
113.06
This variable should be treated as read-only by the user. Don’t explicitly assign a value to it — you
would create an independent local variable with the same name masking the built-in variable with its magic
behavior.
1 Since ** has higher precedence than -, -3**2 will be interpreted as -(3**2) and thus result in -9. To avoid this and get
9, you can use (-3)**2.
10 Chapter 3. An Informal Introduction to Python
Python Tutorial, Release 3.7.0
In addition to int and float, Python supports other types of numbers, such as Decimal and Fraction.
Python also has built-in support for complex numbers, and uses the j or J suffix to indicate the imaginary
part (e.g. 3+5j).
3.1.2 Strings
Besides numbers, Python can also manipulate strings, which can be expressed in several ways. They can be
enclosed in single quotes ('...') or double quotes ("...") with the same result2. \ can be used to escape
quotes:
>>> 'spam eggs' # single quotes
'spam eggs'
>>> 'doesn\'t' # use \' to escape the single quote...
"doesn't"
>>> "doesn't" # ...or use double quotes instead
"doesn't"
>>> '"Yes," they said.'
'"Yes," they said.'
>>>
