# Python Lambda - Anonymous Function

Python supports nameless functions called lambda functions. This is sometimes called an anonymous function. You can create anonymous function using the lambda keyword.

A lambda function can have only one expression, but can have multiple arguments. The expression is evaluated and it returns the result.

Lambda functions are frequently used with the `map()`, `filter()`, and `reduce()` operations.

Related course: Complete Python Programming Course & Exercises

## Python lambda Function Syntax

The lambda function syntax is:

``````lambda arguments : expression
``````

## Python Anonymous Function Example

A traditional function has a name, so you could have something like this:

``````def sum(a,b):
return a+b

def ml(a,b):
return a*b

print(sum(3,4))
print(ml(3,4))
``````

You can create anonymous functions like this:

``````x = lambda a, b: a + b
print(x(3,4))

x = lambda a, b: a * b
print(x(3,4))
`````` ## When to use Anonymous Function?

You should use lambda functions for small tasks that have low complexity. Function can have one and only one single expression.

## Lambda Function with map()

The `map()` function takes a function and an iterable as the arguments, then it applies the function to every element in the iterable.

Lets say you want to take every number squared:

``````ln = [1, 2, 3, 4, 5, 6]
ln = map(lambda x: x*x, ln)

for num in ln:
print(num, end=" ")
`````` ## Lambda Function with filter()

The `filter()` function takes a function and an iterable as the argument, then the function is applied to each element of the iterable.

But here's the difference: only if the function returns True, the element is added to the returned iterable.

``````ln = [1, 2, 3, 4, 5, 6]
ln = filter(lambda x: x % 2 == 0, ln)

for num in ln:
print(num, end=" ")
`````` ## Lambda Function with reduce()

The `reduce()` function is part of the functools module. This reduce function takes a function and a sequence as the argument.

The function should accept two arguments. The elements from the sequence are passed to the function along with the cumulative value. The final result is a single value.

``````from functools import reduce

ln = [1, 2, 3, 4, 5, 6]
total = reduce(lambda x, y: x + y, ln)
print(f'Sum of ln elements is {total}')
`````` 