Writing testable scripts with the script-library switch
It's often very easy to create a Python script file. A script file is very easy to use because when we provide the file to Python, it runs immediately. In some cases, there are no function or class definitions; the script file is the sequence of Python statements.
These simple script files are very difficult to test. More importantly, they're also difficult to reuse. When we want to build larger and more sophisticated applications from a collection of script files, we're often forced to re-engineer a simple script into a function.
Getting ready
Let's say that we have a handy implementation of the haversine distance function called haversine()
, and it's in a file named ch03_r11.py
.
Initially, the file might look like this:
import csv
from pathlib import Path
from math import radians, sin, cos, sqrt, asin
from functools import partial
MI = 3959
NM = 3440
KM = 6373
def haversine...