PEP 3102 for review and comment

Kay Schluehr kay.schluehr at gmx.net
Wed May 24 16:14:33 EDT 2006


molasses wrote:
> I don't mind the naked star and will be happy if thats what we end up with.
>
> Though how about using *None?
> I think that makes the intention of the function clearer.
>
> eg.
> def compare(a, b, *None, key=None):
>
> Which to me reads as "no further positional arguments".
>
> Or alternatively:
> def compare(a, b, *0, key=None):
>
> -- Mark

Argh!

Sorry, but this syntax seems to me a perlish hackaround. Although the
star is clearly beautifull and veeeery pythonic ;)

>From the PEP:
    One can easily envision a function
    which takes a variable number of arguments, but also takes one
    or more 'options' in the form of keyword arguments.  Currently,
    the only way to do this is to define both a varargs argument,
    and a 'keywords' argument (**kwargs), and then manually extract
    the desired keywords from the dictionary.

The current solution is fine and not very troublesome. But if you want
to drop a named dict just replace it by an unnamed one ( unless you
think this will seduce people to use devilish, horrible lambda ... ).

Suggestions:

def compare(a, b, *args, **kwd):                # the classics

def compare(a, b, *args, {"key":None}):      # pass keywords in unnamed
dict

def compare(a, b, *args, {key=None}):       # alternative syntax

def compare(a, b, *args, **kwd={...,"key":None}):       # having the
cake and eating it

Regards,
Kay




More information about the Python-list mailing list