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
Post a Comment