On Fri, Jul 10, 2020, 6:54 AM Jonathan Fine <jfine2...@gmail.com> wrote:

> Hi All
>
> SUMMARY
> This is a longish post. It looks at the idea in general terms, and
> outlines a way to get the desired semantics (by not syntax) with Python as
> it is today. And this would be forward compatible with the new syntax, if
> provided later.
>

This post was filled with inspiring ideas for me. Thank you.


> PRESENT
> I like the idea of allowing
>     >>> d[1, 2, 3, a=4, b=5]
> and will explore it further.
>
> First, we can already write
>     >>> f(1, 2, 3, a=4, b=5)
> but that only works for the get operation. For set the present behaviour is
>     >>> f(1, 2, 3, a=4, b=5) = None
>     SyntaxError: can't assign to function call
> and I see no good reason to change that.
>
> Going further, I'd say that allowing both
>     >>> d[something] = value
>     >>> value = d[something]
> is essential to the difference between f(something) and d[something]. Both
> are expressions, but only one of them can be assigned to.
>


> Here goes. First syntax.
>     >>> value = d[K(1, 2, 3, a=4, b=5)]
>     >>> d[K(1, 2, 3, a=4, b=5)] = value
>


My mind instantly went to the idea of using this syntax as a way write
single line mathematical function definitions:

f[x, y] = x + y

The example function doesn't even require the suggested K() object since no
kwargs or defaults are used.

Of course one would need to instantiate any these single line functions
using a little bit of boilerplate up top. But this could be when you
provide the docstring:

f = MathFunction("Simple math function")
f[x, y] = x + y

And calling them would use a different bracket type (parentheses):

>>> f(1,2)
3

...but these are surmountable hurdles.

>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/QKDZ4Y6KBIVEFJ34ITLZHUT4IPE3QBBQ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to