Lambda Изрази

Какво е Lambda функция?

Анонимна функция, без име, която се дефинира със запазената дума lambda.

Синтаксис

Lambda expressions изискват само един израз!

lambda arguments: expression

Синтактична захар

Lambda expressions имат своя еквивалент и при нормалния синтаксис за създаване на функции!

lambda arguments: expression
def func(arguments):
    return expression

Примери

>>> lambda x: x + 2
<function <lambda> at 0x7f1ba484dc80>

За да използваме Lambda expressions трябва да ги присвоим на обект или да ги върнем като резултат

Примери с присвояне към обект

>>> sqrt = lambda x: x**2
>>> sqrt
<function <lambda> at 0x7f1ba2467bf8>
>>> sqrt()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: <lambda>() missing 1 required positional argument: 'x'
>>> sqrt(3)
9
>>> sqrt(5)
25

Примери

>>> add = lambda i, j: i + j
>>> add
<function <lambda> at 0x7f1ba484dc80>
>>> add()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: <lambda>() missing 2 required positional arguments: 'i' and 'j'
>>> add(3, 4)
7
>>> add(3, -4)
-1

Примери с връщане като резултат

>>> def sub_by(number):
...     return lambda x: x / number
... 
>>> sub_by(5)
<function sub_by.<locals>.<lambda> at 0x7f1ba484dae8>
>>> s = sub_by(5)
>>> s(10)
2.0
>>> s(1)
0.2

Примери

>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> r = map(lambda x: x + 10, a)
>>> r
<map object at 0x7f1ba241c198>
>>> for el in r:
...     print(el)
... 
10
11
12
13
14
15
16
17
18
19
Made with Slides.com