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.



-- 
Steven



More information about the Python-list mailing list