<p dir="ltr"><br>
On 2 Aug 2013 17:31, "Alexander Shorin" <<a href="mailto:kxepal@gmail.com">kxepal@gmail.com</a>> wrote:<br>
><br>
> Hi Terry,<br>
><br>
> On Fri, Aug 2, 2013 at 12:29 AM, Terry Reedy <<a href="mailto:tjreedy@udel.edu">tjreedy@udel.edu</a>> wrote:<br>
> > def f(x): return 2*x<br>
> > f = lambda x: 2*x<br>
> > Three spaces is seldom a crucial difference. If the expression is so long it go past the limit (whatever we decide it is), it can be wrapped.<br>
><br>
> and if I have multiple lambda-like def`s it will hit the PEP rule :<br>
><br>
> > While sometimes it's okay to put an if/for/while with a small body on the same line, never do this for multi-clause statements. Also avoid folding such long lines!<br>
><br>
> On Fri, Aug 2, 2013 at 12:29 AM, Terry Reedy <<a href="mailto:tjreedy@udel.edu">tjreedy@udel.edu</a>> wrote:<br>
> >> and/or to remove duplicates (especially for sorted groupby case)?<br>
> > I do not understand this.<br>
><br>
> See [Python-Dev] Lambda [was Re: PEP 8 modernisation] thread for example:<br>
> <a href="http://mail.python.org/pipermail/python-dev/2013-August/127715.html">http://mail.python.org/pipermail/python-dev/2013-August/127715.html</a><br>
><br>
> On Fri, Aug 2, 2013 at 12:35 AM, Terry Reedy <<a href="mailto:tjreedy@udel.edu">tjreedy@udel.edu</a>> wrote:<br>
> >> I understand this, but I'm a bit confused about fate of lambdas with<br>
> >> such guideline since I see no more reasons to use them with p.9<br>
> >> statement: long lines, code duplicate, no mock and well tests etc. -<br>
> >> all these problems could be solved with assigning lambda to some name,<br>
> >> but now they are looks useless (or useful only for very trivial cases)<br>
> ><br>
> >I do not understand most of that, but...<br>
> >The guideline is not meant to cover passing a function by parameter name.  mylist.sort(key=lambda x: x[0]) is still ok. Does "Always use a def statement >instead of assigning a lambda expression to a name." need 'in an assignment statement' added?<br>

><br>
> I wrote about that lambda`s use case become too small to use them in<br>
> real code. If they are dishonoured - need to write so and clearly, but<br>
> not limiting their use cases step by step till every Python devs will<br>
> think like "Lambdas? Why? Remove them!".</p>
<p dir="ltr">Lambda was almost removed in Python 3.</p>
<p dir="ltr">><br>
> Using `dict` to store lambdas:<br>
><br>
> > op = { 'add': lambda x,y: x*y, 'mul':  lambda x, y: x+y}<br>
><br>
> Shows the hack to bypass PEP8 guides. Do you like to see code above instead of:<br>
><br>
> add = lambda x,y: x*y<br>
> mul = lambda x, y: x+y<br>
><br>
> Probably, I don't since dict is a blackbox and I have to check things<br>
> first before use them.</p>
<p dir="ltr">People are free to write their own style guides that disagree with pep 8 (a point which is now made explicitly in the PEP).</p>
<p dir="ltr">><br>
> Disclaimer:  I don't try to stand for lambdas, I'm not using them<br>
> everywhere in my code, but I'd like to know answer for the question<br>
> "Why lambdas?". Currently, it is "Handy shorthand functions - use them<br>
> free", but with new PEP-8 statement I really have to think like<br>
> "Lambdas? Really, why?".</p>
<p dir="ltr">Use them for an anonymous function as an expression. All PEP 8 is now saying is that giving a lambda a name is to completely misunderstand what they're for.</p>
<p dir="ltr">Cheers,<br>
Nick.<br>
</p>