How to write verbose scripts

Uwe Schmitt rocksportrocker at googlemail.com
Wed Sep 3 13:31:52 CEST 2008


On 2 Sep., 18:55, Steven D'Aprano <st... at REMOVE-THIS-
cybersource.com.au> wrote:
> I find myself writing command line tools in Python where I wish to
> include "verbose" output to stdout.
>
> I start with a helper function:
>
> def print_(obj, level=0):
>     if _verbosity >= level:
>         print obj
>
> And then I end up with functions or methods looking like this:
>
> def parrot(x)
>     print_("precondition", level=2)
>     do_something()
>     print_("status is good...", level=1)
>     print_("parrot is squawking strongly now", level=2)
>     do_something_else()
>     print_("squawk squawk squawk", level=3)
>     do_more()
>     print_("postcondition", level=1)
>     return something
>
> That often means that my functions end up with more message printing code
> than actual code. The whole thing seems messy and hard to manage for all
> but the smallest scripts.
>
> Worst of all, sometimes the messages I wish to print may be expensive to
> compute, and I don't want to waste time computing them if they aren't
> going to be printed because the verbosity is too low. But nor do I wish
> to fill my code with this:
>
> if _verbosity >= 3:
>     x = calculate_complicated_thing()
>     print_(x, level=3)
>
> Is there a better way of doing this than the way I am going about it?
>
> --
> Steven

You can save some code if you use function decorators for logging
input and output values of
functions.
So write lots of functions containing one statement and your problem
is solved ;-)

Greetings, Uwe




More information about the Python-list mailing list