On 09/10/2018 12:52 PM, Chris Barker via Python-ideas wrote:

I've spent this whole thread thinking: "who in the world is writing code with a lot of spam=spam arguments? If you are transferring that much state in a function call, maybe you should have a class that holds that state? Or pass in a **kwargs dict?

So still looking for a compelling use-case

In my day job I spend a lot of time writing/customizing modules for a framework called OpenERP (now Odoo*). Those modules are all subclasses, and most work will require updating at least a couple parent metheds -- so most calls look something like:

  def a_method(self, cr, uid, ids, values, context=None):
    ...
    super(self, parent).a_method(cr, uid, ids, values, context=context)

Not a perfect example as these can all be positional, but it's the type of code where this syntax would shine.

I think, however, that we shouldn't worry about a lead * to activate it, just use a leading '=' and let it show up anywhere and it follows the same semantics/restrictions as current positional vs keyword args:

  def example(filename, mode, spin, color, charge, orientation):
      pass

  example('a name', 'ro', =spin, =color, charge=last, =orientation)

So +0 with the above proposal.

--
~Ethan~
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to