On 2007-02-02, Igor V. Rafienko <[EMAIL PROTECTED]> wrote: > Hi, > > I was wondering whether it was possible to find out which > parameter value is being used: the default argument or the > user-supplied one. That is: > > def foo(x, y="bar"): > # how to figure out whether the value of y is > # the default argument, or user-supplied? > > foo(1, "bar") => user-supplied > foo(1) => default > > {}.pop seems to be able to make this dictinction.
You can fake it (this may be how dict.pop work) by not providing defaults, but using positional arguments. Here's a silly example, which returns a tuple if the user supplies the second argument, and a list otherwise. def foo(x, *args): if len(args) == 0: y_provided = True y = "bar" else: y_provided = False y = args[0] if y_provided: return (x, y) else: return [x, y] -- Neil Cerutti Wonderful bargains for men with 16 and 17 necks --sign at clothing store -- http://mail.python.org/mailman/listinfo/python-list