Function Parameters
Ian Kelly
ian.g.kelly at gmail.com
Thu Dec 27 15:33:45 EST 2012
On Thu, Dec 27, 2012 at 1:16 PM, Joseph L. Casale
<jcasale at activenetwerx.com> wrote:
> When you use optional named arguments in a function, how do you deal with with
> the incorrect assignment when only some args are supplied?
>
> If I do something like:
>
> def my_func(self, **kwargs):
>
> then handle the test cases with:
>
> if not kwargs.get('some_key'):
> raise SyntaxError
> or:
>
> if kwargs.get('some_key') and kwargs.get('another_key'):
> ...
>
> I loose the introspection that some IDE's provide from the doc strings.
>
> Any ideas on how to deal with this?
Don't use kwargs for this. List out the arguments in the function
spec and give the optional ones reasonable defaults.
def my_func(self, some_key=None, another_key=None):
if some_key and another_key:
do_something()
If None is a meaningful value for the argument, then a good technique
is to use a unique object as the default instead.
MISSING = object()
def my_func(self, some_key=MISSING, another_key=MISSING):
if some_key is not MISSING and another_key is not MISSING:
do_something()
I only use kwargs myself when the set of possible arguments is dynamic
or unknown.
More information about the Python-list
mailing list