A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-list/2001-April/098943.html below:

Idiom gone, or did it really ever exist? () is ()

Idiom gone, or did it really ever exist? () is ()Russell E. Owen owen at astrono.junkwashington.emu
Wed Apr 18 12:53:49 EDT 2001
In article <mailman.987566424.29391.python-list at python.org>,
 "Mike C. Fletcher" <mcfletch at home.com> wrote:

>Over the years, I've occasionally used this idiom:
>
>NULLARGUMENT = ()
>
>def someFunctionOrMethod  (argument = NULLARGUMENT ):
>    if argument is NULLARGUMENT:
>        doSomething()
>    else:
>        doSomethingElse()
>
>That is, I was attempting to distinguish between a call where argument is
>passed a NULL tuple and a call where argument is passed nothing at all.
>When I was working on unit tests for my current piece of code, however, I
>discovered that this no longer works (Python 1.5.2).

I like your idiom and often use it, but you have a minor bug. You say 
you wish to distinguish between two cases:
- passing an empty tuple
- passing no argument at all
yet your default value for "argument" *is* an empty tuple, so your code 
cannot do the job. If you really want to do this job, pick any other 
default value, such as None or "".

A good choice of default depends on what values you expect. An example: 
in some of my GUI coding I want to distinguish between three cases:
- use a user-specified label
- use a default label
- no label

In that case I tend to code things as follows:

def myFunc(label=None):
    """A demonstration of default arguments
    Inputs:
    - label: if omitted, a default is supplied; if "" then no label
    """
    if label:
        print "label =:", label
    elif label is None:
        print "default label"
    else:
        print "no label"

-- Russell

More information about the Python-list mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4