473,395 Members | 1,956 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

easy verbose in functions

Hello,

I've a function like this:
def myfunction(data, verbose = False):
dothis...
if verbose: print 'I do this'
dothisother
if verbose: print 'I do this other'
...

How can I do to exclude eachtime the `if verbose` statement?

I tried `print verbose and 'I do this'` but it's printing `False`.
So I tried with `verbose = None` in the definition, but it's printing None!

Thanks.
Jul 18 '05 #1
4 11059
Pascal wrote:
Hello,

I've a function like this:
def myfunction(data, verbose = False):
dothis...
if verbose: print 'I do this'
dothisother
if verbose: print 'I do this other'
...

How can I do to exclude eachtime the `if verbose` statement?


How about defining a function like:

def myprint(arg):
if verbose:
print arg

and using that?

--
Timo Virkkala
Jul 18 '05 #2
pa***********@free.fr (Pascal) wrote in
news:e5**************************@posting.google.c om:
def myfunction(data, verbose = False):
dothis...
if verbose: print 'I do this'
dothisother
if verbose: print 'I do this other'
...

How can I do to exclude eachtime the `if verbose` statement?


If it offends you that much:

def log_verbose(s):
print s
def log_dummy(s):
pass
def myfunction(data, verbose = False):
if verbose:
log = log_verbose
else:
log = log_dummy
dothis...
log('I do this')
dothisother
log('I do this other')
...

or even pass the log function around as the parameter.

A more general solution might be to use Python's logging facility. That
gives you the opportunity to classify your log messages by different levels
(debug, info, warning, error, critical) and also by the section of program
in a hierarchical arrangement. This gives you the ability to, say, turn on
debug logging for a class, or a module by editing a config file.
Jul 18 '05 #3
Hello Pascal,
I've a function like this:
def myfunction(data, verbose = False):
dothis...
if verbose: print 'I do this'
dothisother
if verbose: print 'I do this other'
...

How can I do to exclude eachtime the `if verbose` statement?

I tried `print verbose and 'I do this'` but it's printing `False`.
So I tried with `verbose = None` in the definition, but it's printing None!

Try the logging package?

HTH.
Miki
Jul 18 '05 #4
Hello Pascal,

Pascal wrote:
Hello,

I've a function like this:
def myfunction(data, verbose = False):
dothis...
if verbose: print 'I do this'
dothisother
if verbose: print 'I do this other'
...

How can I do to exclude eachtime the `if verbose` statement?

I tried `print verbose and 'I do this'` but it's printing `False`.
So I tried with `verbose = None` in the definition, but it's printing None!


I'm not sure exactly what you are doing because I can't
duplicate your results.

But I am guessing that what you are doing is passing a
string "False" instead of the boolean constant False.
The constant False is only defined in Python 2.2 and
higher.

You can put something like this at the beginning of
your program to make sure that False and True are
defined no matter what version of Python you are using:

try:
if False:
pass
except:
False = 0
True = not False
Notice the difference between a string and a boolean value:
print False; print "False" 0
False type(False); type("False")

<type 'int'>
<type 'str'>

Likewise None is not the same as "None".
The way I would handle verbose printing in functions is
to factor out the "verbosity" from the function logic:

def verboseprint(s, verbose):
if verbose: print s

def myfunction(arg, verbose=False):
dothis
verboseprint("Do this", verbose)
dothat
verboseprint("Do that", verbose)
That way, if there is a bug in your handling of verbose
printing, you only need to fix it in one place. If you
decide to change verbose printing to (say) using a log
file, you only need to change one place.

The statement:

print verbose and "Do this"
will not work. If verbose is True, then the term
(verbose and "Do this") will evaluate to "Do this", and
Python will print what you expect, namely "Do this".

But if verbose is False, then the term (verbose and "Do
this") will evaluate to False, and Python will then
print False, which is not what you want.

--
Steven D'Aprano
Jul 18 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Michael Ahlers | last post by:
Obviously if you're looping or using a template, choosing output based on the current iteration is easy. For example, if you're walking a set of elements and you want index % 2 == 0 produce one...
1
by: Jeremy | last post by:
I am using regular expressions and I would like to use both re.IGNORECASE and re.VERBOSE options. I want to do something like the following (which doesn't work): matsearch = r'''^\ {0,4}(\d+)...
0
by: Adam H. Pendleton | last post by:
When running a "VACUUM VERBOSE" query using PQsendQuery, PQconsumeInput, and PQisBusy, all the "INFO:" output from the "VACUUM VERBOSE" command is printed on the terminal, and is not available...
9
by: Eric Lilja | last post by:
Hello, I'm a novice C++ programmer and now I have the task of converting a number of C++ functions to C. Some of the functions I'm converting takes a parameter of type reference-to-std::string...
2
by: Frank Lopez | last post by:
Question: Is there any way to use the Visual Studio .NET environment to easily identify C and C++ functions that are not called? If not, does anyone have any recommendations on some other...
3
by: mast2as | last post by:
In the same vein as the topic that I started on exception handling ;-) .... If I have read (not all of them though) the documents that you guys pointed me to, the try/throw/catch mechanism should...
12
by: Les Caudle | last post by:
I've got a .NET 2.0 app that works quite well on all of my test boxes. However, at the client's site, it crashes with 'has encounted a problem' basic dialog. No useful info. I've yet to see...
84
by: braver | last post by:
Is there any trick to get rid of having to type the annoying, character-eating "self." prefix everywhere in a class? Sometimes I avoid OO just not to deal with its verbosity. In fact, I try to...
11
by: Steven D'Aprano | last post by:
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:...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.