3 ms·
So do a "def" instead, it can be even inlined. def add_fun(x,y): return x+y But I wouldn't mind irritating the linter with an assigned lambda. I fail to see w
by sharikous 5y ago
So do a "def" instead, it can be even inlined.
def add_fun(x,y): return x+y
But I wouldn't mind irritating the linter with an assigned lambda. I fail to see what's the problem with it
- ViViDboarder 5y agoBut if you’re doing that, why not just import the identical function?
- sharikous 5y agoOne major point of OP was that the functions defined in operators are faster. Grandparent comment argued that there is a measurement error that invalidates this point, since properly defined lambdas (or defs) are just as fast. Of course the point regarding the simplicity of importing a function instead of defining it still stands. I personally wouldn't mind defining those functions as they are very immediate. So from the article I would take only the part about the more exotic "operator".
- klyrs 5y agoThe timings are certainly closer, but the built-in function imported from operator is still faster than the user-defined function. Not a big deal if you're doing simple stuff, but if this code is in a hot loop that 30% can make a measurable difference.
- kevin_thibedeau 5y agoLambdas don't know their name and weaken debug info.
- elteto 5y agoIt seems like an implementation issue of the interpreter no? There’s no reason lambdas _have_ to be this way.
- jonathrg 5y agolambdas don't have names, how could the interpreter possibly improve in this regard?
- zodiakzz 5y agoJS arrow functions don't have names either, it's inferred from the left hand side variable name. Can't Python do something similar?
- jonathrg 5y agoIf you assign a lambda to a variable, you might as well use a def. A more typical use of a lambda is as an arguments to a function call. What would be the name of, say, the first argument to map(lambda x: x*2, numbers)?