I could absolutely see a lot of use for this when it comes to rebinding
names in callbacks and the like.

for i in range(10):
  callLater(delay, lambda i=: print(i))

But with this being a very common scenario for such a feature being needed,
we'd see a lot of confusion with how much that looks like a walrus operator.

I am +1 on the feature, but -1 on the syntax.

On Thu, Apr 16, 2020 at 12:45 PM Steven D'Aprano <st...@pearwood.info>
wrote:

> Do any other languages already have this feature?
>
> Can you show some actual real-life code that would benefit from this, as
> opposed to pretend code like:
>
>     foo(bar=, qux=)
>
> I think that if I had seen this syntax as a beginner, I would have had
> absolutely no idea how to interpret it. I probably would have decided
> that Python was an unreadably cryptic language and gone on to learn
> something else.
>
> Of course, with 20+ years of experience reading and writing code, I
> know better now. I would interpret it as setting bar and qux to some
> kind of Undefined value.
>
> I am very sympathetic to the rationale:
>
> "it is quite common to find code that forwards keyword parameters having
> to re-state keyword arguments names"
>
> and I've discussed similar/related issues myself, e.g. here:
>
> https://mail.python.org/pipermail/python-list/2018-February/881615.html
>
> But I am not convinced that adding magic syntax to implicitly guess the
> value wanted as argument if it happens to match the parameter name is a
> good design feature.
>
> Is being explicit about the value that you are passing to a parameter
> really such a burden that we need special syntax to avoid stating what
> value we are using as the argument?
>
> I don't think it is. And I would far prefer to read explicit code like
> this:
>
>     # Slightly modified from actual code.
>     self.do_something(
>         meta=meta,
>         dunder=dunder,
>         private=private,
>         invert=invert,
>         ignorecase=ignorecase,
>         )
>
> over the implicit version:
>
>     # Looks like code I haven't finished writing :-(
>     self.do_something(meta=, dunder=, private=, invert=, ignorecase=)
>
>
> Out of the millions of possible values we might pass, I don't think that
> the func(spam=spam) case is so special that we want to give it special
> syntax.
>
> --
> Steven
> _______________________________________________
> 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/VCCQ6BOVEQZ4ZWLKVDTVUCMAWD2VQL7B/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
>

-- 

CALVIN SPEALMAN

SENIOR QUALITY ENGINEER

cspea...@redhat.com  M: +1.336.210.5107
[image: https://red.ht/sig] <https://red.ht/sig>
TRIED. TESTED. TRUSTED. <https://redhat.com/trusted>
_______________________________________________
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/GXB6KYUUO2QKCYIDBYIV74GVZTRSQUSU/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to