[Python-ideas] Positional only arguments

Ron Adam rrr at ronadam.com
Fri May 18 17:14:42 CEST 2007


Fred L. Drake, Jr. wrote:
> On Thursday 17 May 2007, George Sakkis wrote:
>  > single "delimiter" symbol (e.g. '%') between pos-only and pos-or-kw
>  > would kill both birds with one stone, i.e. something like:
> 
> A delimeter that would be needed anyway would make this a little nicer:
> 
>   def myfunc(a, b, c=24; *, kw=42):
>       pass
> 
> This example would have 3 positional-only arguments (a, b, c) and one 
> keyword-only argument (kw).
> 
> Replacing the comma with a semicolon avoids the need for a syntax-only 
> position (good, IMO), avoids introducing a new special character, and re-uses 
> one that's rarely used anyway.


[A few thoughts]

     def foo([positonal_only_args][; [kwd_args][; kwds_only]]): ...

     def myfunct(a, b, c=42; e=99; kw=42): ...

     args = (1, 2, 3, 4)   # 'e' can be in either args or kwds,
     kwds = {'kw': 42}     # but not both.

     bar = foo(*args, **kwds)


How about signature objects that are similar to slice objects?

     sig = signature(*args, **kwds)      # Pre package signature.
     sig = signature(1, 2, 3, 4, kw=42)

Could something like this have performance benefit if the same exact 
signature is used over and over?  Possibly just passing a pre parsed name 
space to the function?

     bar = foo(sig)        # No need to unpack with * or **.

     bar = foo(@sig)       # Be lenient, extra args and kwds
                           # are consumed or ignored.
                           # But always error if something is missing.

The '@' sign is like a vortex which sucks up unused args.  ;-)

Ron












More information about the Python-ideas mailing list