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
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