What's the proper style for a library string function?

Steven D'Aprano steve+comp.lang.python at pearwood.info
Sun Jul 20 03:41:40 CEST 2014

On Sat, 19 Jul 2014 10:38:47 -0700, C.D. Reimer wrote:

> Greetings,
> I typically write a Python 2.7 string function in my library like this:
>      def getCompletedTime(start, end): 
>          return "Time completed:", str(end - start)
> And called it like this:
>      print getCompletedTime(start, end)
> Since every Python script I write is executed from the command line, I
> rewrote the string function like this:
>      def getCompletedTime(start, end): 
>           print "Time completed:", str(end - start)
> And call it like this:
>      getCompletedTime(start, end)

In general, I much prefer the first version. The general principle I 
follow is, as much as possible, to separate calculation from display. 
Advantages include:

- You can easily re-use the getCompletedTime function in situations where 
you don't want to display the time, or pass the result on to another 
function for further processing before display.

- It makes automated testing of the functions much easier.

- It makes it easier to vary the type of display. Today you want to print 
to the standard output. Tomorrow you might want to output to a file, or 
display in a GUI window.

- It makes it easier to understand the large-scale structure of your 
code. Seeing "print getCompletedTime(a, b)" makes it pretty clear that 
you are printing the result of the calculation, whereas 
"getCompletedTime(a, b)" does not.


More information about the Python-list mailing list