Book Image

Python Essentials

By : Steven F. Lott
Book Image

Python Essentials

By: Steven F. Lott

Overview of this book

Table of Contents (22 chapters)
Python Essentials
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Designing alternative implementations


We can easily offer alternative implementations of a given feature. If we want more speed, more accuracy, or less memory use, we should be able to import an alternative definition of a given library.

We can compare the math and cmath modules for a concrete example of this principle. Here's an example of how they differ:

>>> import math
>>> import cmath
>>> math.sqrt(-1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error
>>> cmath.sqrt(-1)
1j

The math module includes a square root function, which we used as math.sqrt(). This produces only real-valued results, and must raise an exception when confronted with an expression that's not real-valued.

The cmath module also includes a square root function. The cmath.sqrt() function can return complex values instead of raising an exception. Since the packages are so similar, we can substitute one for the other in a...