2023-02-15 15:31:31 +00:00
|
|
|
---
|
|
|
|
categories:
|
|
|
|
- Programming Languages
|
|
|
|
tags: [python]
|
|
|
|
---
|
|
|
|
|
|
|
|
# Lambdas in Python
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
In Python, anonymous functions like arrow-functions in JavaScript (`() => {}`)
|
|
|
|
are immediately invoked and unnamed. They are called lambdas.
|
2023-02-15 15:31:31 +00:00
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
Whilst they are unnamed, just like JS, the value they return can be stored in a
|
|
|
|
variable. They do not require the `return` keyword.
|
2023-02-15 15:31:31 +00:00
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
They are most often used unnamed with the functional methods
|
|
|
|
[map, filter](/Programming_Languages/Python/Syntax/Map_and_filter_in_Python.md)
|
|
|
|
and reduce.
|
2023-02-15 15:31:31 +00:00
|
|
|
|
|
|
|
Here is the two syntaxes side by side:
|
|
|
|
|
|
|
|
```js
|
2023-02-17 11:02:50 +00:00
|
|
|
// JavaScript
|
|
|
|
|
2023-02-15 15:31:31 +00:00
|
|
|
const double = (x) => x * x;
|
|
|
|
```
|
|
|
|
|
|
|
|
```py
|
2023-02-17 11:02:50 +00:00
|
|
|
# Python
|
|
|
|
|
2023-02-15 15:31:31 +00:00
|
|
|
double = lambda x: x * x
|
|
|
|
```
|
|
|
|
|
|
|
|
Here is a lambda with multiple parameters:
|
|
|
|
|
|
|
|
```py
|
|
|
|
func = lambda x, y, z: x + y + z
|
|
|
|
print(func(2, 3, 4))
|
|
|
|
# 9
|
|
|
|
```
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
> Lambdas obviously enshrine functional programming paradigms. Therefore they
|
|
|
|
> should be pure functions, not mutating values or issueing side effects. For
|
|
|
|
> example, it would be improper (though syntactically well-formed) to use a
|
|
|
|
> lambda to `print` something
|