Fredrik Lundh wrote: > Avi Kak wrote: >> Suppose I write a function that I want to be called >> with ONLY keyword argumnts, how do I raise an >> exception should the function get called with >> what look like position-specfic arguments? > > here's one way to do it: > >>>> def func(*args, **kw): > ... def myrealfunc(a=1, b=2, c=3): > ... print a, b, c > ... if args: > ... raise TypeError("invalid call") > ... return myrealfunc(**kw) > ... >
If you aren't particular about the message then you can do without the args argument and just define it with **kw: >>> def func(**kw): def myrealfunc(a=1, b=2, c=3): print a, b, c return myrealfunc(**kw) >>> func(1) Traceback (most recent call last): File "<pyshell#14>", line 1, in -toplevel- func(1) TypeError: func() takes exactly 0 arguments (1 given) >>> func(a=3) 3 2 3 >>> and if you are particular about the message perhaps submitting a patch to generate a more appropriate message would be a good idea. -- http://mail.python.org/mailman/listinfo/python-list