*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)