Funcones anónimas (lambda)

  • Duración de la lección: 4:27 min

[1]:
#
# Función creada con nombre
# =============================================================================
#
def incr(x):
    return x + 1


incr(1)
[1]:
2
[2]:
incr
[2]:
<function __main__.incr(x)>
[3]:
copia_de_incr = incr

copia_de_incr(1)
[3]:
2
[4]:
#
# Función anónima o lambda
# =============================================================================
#
incr_ = lambda x: x + 1
incr_(1)
[4]:
2
[5]:
#
# Las funciones lambda se puede aplicar
# directamente
#
(lambda x: x + 1)(2)
[5]:
3
[6]:
#
# Creación de una función que devuelve otra
#
def make_incrementor(n):
    return lambda x: x + n


f = make_incrementor(42)
f(1)
[6]:
43
[7]:
#
# Función compuesta de varias subfunciones
# Principio de responsabilidad simple:
# cada función hace una tarea y solo una tarea
#
def complex_function(x):
    def constant():
        return 1

    def first():
        return x

    def second():
        return x ** 2

    result = constant() + first() + second()
    return result


complex_function(2)
[7]:
7