*Memo:
A lambda:
- is the function expression which can be assigned to a variable and parameter and whose type is
func
. - can be created with
lambda (zero or more parameters): one expression
. - can be assigned a variable, function, lambda and class to.
- can be defined a lambda in.
- doesn't have
def
andidentifier
. - cannot have any pass statements and return statements.
- cannot be defined any variable, function and class in.
- Lambda Expressions explains a lambda more.
A lambda can be created with lambda (zero or more parameters): one expression
as shown below:
# Equivalent v = lambda: 2 # def func(): return 2 v = lambda: print(2) # def func(): print(2) v = lambda x: x # def func(x): return x v = lambda x, y: x+y # def func(x, y): return x+y v = lambda x, y=3: x+y # def func(x, y=3): return x+y v = lambda x, /, y=3, *, z=5: x+y+z # def func(x, /, y=3, *, z=4): # return x+y+z v = lambda *x, **y: print(x, y) # def func(*x, **y): print(x, y) # No error v = lambda num: num*2 v = lambda num: (lambda num: num*2)(num)*2 v = lambda num: (lambda num: (lambda num: num*2)(num)*2)(num)*2 # No error v = lambda: v = lambda: pass v = lambda: return 2 v = lambda: myvar = 'myvar' v = lambda: def myfn(): return 'myfn' v = lambda: class mycls: return 'mycls' # Error
A lambda is the function expression which can be assigned to a variable and parameter whose type is func
as shown below:
v = lambda x, y: x+y print(v) print(lambda x, y: x+y) # <function <lambda> at 0x000001977A636980> print(type(v)) print(type(lambda x, y: x+y)) # <class 'function'> print(v(3, 5)) print((lambda x, y: x+y)(3, 5)) # 8 print(v(7, 2)) print((lambda x, y: x+y)(7, 2)) # 9 print(v(1, 4)) print((lambda x, y: x+y)(1, 4)) # 5
Zero or more parameters can be set in a lambda as shown below:
v = lambda: 2 print(v()) # 2
v = lambda: print(2) v() # 2
v = lambda x: x print(v(2)) print(v(x=2)) # 2
v = lambda x, y=3: x+y print(v(2)) print(v(x=2)) # 5 print(v(2, 4)) print(v(2, y=4)) print(v(x=2, y=4)) print(v(y=4, x=2)) # 6
v = lambda x, /, y=3, *, z=5: x+y+z print(v(2, 4, z=6)) print(v(2, y=4, z=6)) print(v(2, z=6, y=4)) # 12 print(v(2, 4)) print(v(2, y=4)) # 11 print(v(2, z=4)) # 9 print(v(2)) # 10
v = lambda *x, **y: print(x, y) v() # () {} v(0, 1) v(*[0, 1]) # (0, 1) {} v(A=2, B=3) v(**{'A':2, 'B':3}) # () {'A': 2, 'B': 3} v(0, 1, A=2, B=3) v(*[0, 1], **{'A':2, 'B':3}) # (0, 1) {'A': 2, 'B': 3}
Any pass
and return
statements cannot be set in a lambda as shown below:
*Memo:
- The lambda without one expression gets error.
v = lambda: pass v = lambda: return 2 # SyntaxError: invalid syntax
v = lambda: # Without one expression # SyntaxError: invalid syntax
A variable, function, lambda and class can be assigned to parameters as shown below:
myvar = 'myvar' def myfn(): return 'myfn' mylam = lambda: 'mylam' class mycls: v = 'mycls' v1 = lambda v, f, l, c: print(v, f(), l(), c.v) v2 = lambda v=myvar, f=myfn, l=mylam, c=mycls: print(v, f(), l(), c.v) v1(myvar, myfn, mylam, mycls) v1(v=myvar, f=myfn, l=mylam, c=mycls) v2() # myvar myfn mylam mycls
A lambda can be defined in a lambda as shown below:
<1D lambda>:
v = lambda num: num*2 print(v(3)) # 6
<2D lambda>:
v = lambda num: (lambda num: num*2)(num)*2 print(v(3)) # 12
<3D lambda>:
v = lambda num: (lambda num: (lambda num: num*2)(num)*2)(num)*2 print(v(3)) # 24
Any variable, function and class can be defined in a lambda as shown below:
v = lambda: myvar = 'myvar' # SyntaxError: cannot assign to lambda v = lambda: def myfn(): return 'myfn' v = lambda: class mycls: return 'mycls' SyntaxError: invalid syntax
Top comments (0)