DEV Community

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

Posted on

Lambda in Python

Buy Me a Coffee

*Memos:

Lambda:

  • is the function which can be stored in a variable and parameter.
  • is an expression.
  • doesn't have def and identifier.
  • cannot have return and pass.
  • is almost same as a normal function except these above.
  • You can see Lambda Expressions

You can use Lambda as shown below:

                                       # Equivalent
v1 = lambda: 2                         # def func(): return 2
v1 = lambda x: x                       # def func(x): return x
v1 = lambda x, y: x+y                  # def func(x, y): return x+y
v1 = lambda x, y=3: x+y                # def func(x, y=3): return x+y
v1 = lambda x=2, y=3: x+y              # def func(x=2, y=3): return x+y
v1 = lambda x=2, /, y=3, *, z=4: x+y+z # def func(x=2, /, y=3, *, z=4):
# No error                             #     return x+y+z

v1 = v2 = lambda: 2
v1, v2 = [lambda: 2, lambda: 3]
# No error

v1 = def func() return 2
v1 = func() return 2
v1 = lambda: return 2
v1 = lambda: pass
# SyntaxError: invalid syntax
v1 = lambda: 2
print(v1()) # 2

v1 = lambda x: x
print(v1(2))   # 2
print(v1(x=2)) # 2

v1 = lambda x, y: x+y
print(v1(2, 3))     # 5
print(v1(2, y=3))   # 5
print(v1(x=2, y=3)) # 5
print(v1(y=3, x=2)) # 5

v1 = lambda x=2, y=3: x+y
print(v1(6))         # 9
print(v1(x=6))       # 9
print(v1(y=5))       # 7
print(v1(6, 5))      # 11
print(v1(6, y=5))    # 11
print(v1(x=6, y=5))  # 11
print(v1(y=5, x=6))  # 11

v1 = lambda x=2, /, y=3, *, z=4: x+y+z
print(v1(6, 5, z=4))   # 15
print(v1(6, y=5, z=4)) # 15
print(v1(6, z=4, y=5)) # 15

v1 = v2 = lambda: 2
print(v1(), v2()) # 2 2

v1, v2 = [lambda: 2, lambda: 3]
print(v1(), v2()) # 2 3

def func(x=lambda: 2):
    print(x())
func()            # 2
func(lambda: 4)   # 4
func(x=lambda: 4) # 4

Top comments (0)