# Lambda functionsΒΆ

Some functions can be easily defined in a single line of code, and it is sometimes useful to be able to define a function “on the fly” using `lambda` notation. `lambda` is a special way of creating small, single-line functions. The format of the lambda is:

```lambda <arguments>: <single exprsession>
```

To define a function that returns `2*x` for any input `x`, rather than:

```def f(x):
return 2*x
```

Although lambda functions are anonymous functions, this doesn’t mean that you can’t give it a name. We can define `f` via:

```>>> f = lambda x: 2*x
```

A lambda expression can also have a list:

```>>> f = lambda: [x**2 for x in range(10)]
>>> f()
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
```

You can also define functions of more than one variable, e.g.:

```>>> g = lambda x,y: 2*(x+y)
```

A lambda function can be called after it is defined:

```>>> (lambda x, y=10: 2*x + y) (42)
94
```

A more complicated example which uses a lambda function as a keyword argument (i.e., `f=lambda...`) in another function `func`:

```>>> def func(vals, f=lambda x: sum(x)/len(x)):
f(vals)
>>> func([1,2,3,4,5])
3
```

Note

The lambda notation is one of the built-in Python keywords Python keywords, which means importing NumPy is not needed to use it.

Note

One thing you notice here is that the keyword argument `f=...` is supplied optionally. If there are multiple keyword arguments, they may be called in any order and are not restricted to the order in which they were originally defined.