DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on • Edited on

Lambda in Python

Buy Me a Coffee

*Memo:

  • My post explains a function.
  • My post explains a variable assignment.

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 and identifier.
  • 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 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Zero or more parameters can be set in a lambda as shown below:

v = lambda: 2 print(v()) # 2 
Enter fullscreen mode Exit fullscreen mode
v = lambda: print(2) v() # 2 
Enter fullscreen mode Exit fullscreen mode
v = lambda x: x print(v(2)) print(v(x=2)) # 2 
Enter fullscreen mode Exit fullscreen mode
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 
Enter fullscreen mode Exit fullscreen mode
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 
Enter fullscreen mode Exit fullscreen mode
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} 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode
v = lambda: # Without one expression # SyntaxError: invalid syntax 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

A lambda can be defined in a lambda as shown below:

<1D lambda>:

v = lambda num: num*2 print(v(3)) # 6 
Enter fullscreen mode Exit fullscreen mode

<2D lambda>:

v = lambda num: (lambda num: num*2)(num)*2 print(v(3)) # 12 
Enter fullscreen mode Exit fullscreen mode

<3D lambda>:

v = lambda num: (lambda num: (lambda num: num*2)(num)*2)(num)*2 print(v(3)) # 24 
Enter fullscreen mode Exit fullscreen mode

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 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)