Lasse Vågsæther Karlsen wrote: > I must be missing something but what is the proper way to do a function > using such arguments ?
> - ability to take an unspecified number of "positional arguments" You should probably pass a sequence to the method instead. You can do it the other way, but it's poor coding style in most cases. > - ability to take optional named arguments that follows the first arguments Setting the default value to a value that cannot exist as an argument is the normal way. Eg. None. def fn(vals, cmp=None) > - raise appropriate errors if I use the wrong named arguments def fn(*values, cmp=None): if cmp is None: raise TypeError, "'%s' is an invalid keyword argument for this function" % key If you insist on doing it the other way: FN_LEGAL_ARGS = set( ('cmp',) ) def fn(*values, **options): for key in options.keys(): if not key in FN_LEGAL_ARGS: raise TypeError, "'%s' is an invalid keyword argument for this function" % key -- hilsen/regards Max M, Denmark http://www.mxm.dk/ IT's Mad Science -- http://mail.python.org/mailman/listinfo/python-list