[Tutor] functions first?

Steven D'Aprano steve at pearwood.info
Wed Jan 28 01:10:10 CET 2015

On Tue, Jan 27, 2015 at 08:39:17AM -0800, Alex Kleider wrote:

> I use the docopt module to collect command line options and then 
> configparser to read a file.
> Some of the values (such as a port number, for example) must then be 
> adjusted.  An example is
> a port number which I want to convert from "5022" to ":5022" if it's a 
> non standard port or
> to "" if it is the standard "22" so it can then be used as a string 
> format parameter.
> Perhaps I should be doing this in the same place as I set up the string 
> rather than where
> I populate the 'config' and 'PARAMS' dictionaries?

I see the basic problem as this:

- you have config settings (command line options, config files) 
  which by their nature are always strings
- furthermore they are strings in a format designed for human use
  rather than machine use
- by the time your function uses them, they need to be converted
  from human-format to machine-format.

That last step might involve a type conversion like int(s), trimming 
whitespace, or more complex operations.

The most obvious way to do them is to apply the operation after reading 
the config value but before storing it in the params dict. If that 
works, I wouldn't add complexity where it isn't needed.

If it doesn't work for you, I think you need to explain what the problem 
is before we can suggest a better design.


More information about the Tutor mailing list