lambda - Assign variable to local scope of function in Python -


i'd assign variable scope of lambda called several times. each time new instance of variable. how do that?

f = lambda x: x + var.x - var.y  # code needed here prepare f new var  result = f(10) 

in case it's var i'd replace each invocation without making second argument.

variables undefined in scope of lambda resolved calling scope @ point it's called.

a simpler example...

>>> y = 1 >>> f = lambda x: x + y >>> f(1) 2 >>> y = 2 >>> f(1) 3 

...so need set var in calling scope before calling lambda, although more commonly used in cases y 'constant'.

a disassembly of function reveals...

>>> import dis >>> dis.dis(f)   1           0 load_fast                0 (x)               3 load_global              0 (y)               6 binary_add               7 return_value 

if want bind y object @ point of defining lambda (i.e. creating closure), it's common see idiom...

>>> y = 1 >>> f = lambda x, y=y: x + y >>> f(1) 2 >>> y = 2 >>> f(1) 2 

...whereby changes y after defining lambda have no effect.

a disassembly of function reveals...

>>> import dis >>> dis.dis(f)   1           0 load_fast                0 (x)               3 load_fast                1 (y)               6 binary_add               7 return_value 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -