SlideShare una empresa de Scribd logo
1 de 19
Descargar para leer sin conexión
#QuitoLambda
QuitoLambda @quitolambda
Python con un toque funcional
Presentando a
● Interpretado
● Orientado a Objetos
● Alto nivel
● Legible
● Tipado dinámico
Qué es programación funcional?
● State-less
● Inmutable
● Declarativa
● Sistema de tipos
● Funciones de orden superior
● Funciones puras
Funciones puras
A = 4
def impure_sum(b):
return A + b
def pure_sum(a, b):
return a + b
impure_sum(6)
pure_sum(4, 6)
Funciones como argumento
def add(x, y):
return x + y
def calculate(f, x, y):
return f(x, y)
calculate(add, 5, 5)
calculate(lambda x, y: x + y, 5, 5)
Expresión λ:
Función Anónima
Funciones de orden superior: map
new_list = []
for value in values:
new_list.append(value * 2)
new_list = [x * 2 for x in values]
Funciones de orden superior: filter
new_list = []
for value in values:
if value % 2 == 0:
new_list.append(value)
new_list = [x for x in values if x % 2 == 0]
List comprehensions?
list(map(lambda x: x * 2, values))
list(filter(lambda x: x % 2 == 0, values))
[x * 2 for x in values]
[x for x in values if x % 2 == 0]
Funciones de orden superior: reduce
total = 0
for value in values:
total += value
from functools import reduce
total = reduce(lambda accum, current: accum + current, values, 0)
Partials
def add_two(b):
return add(2, b)
print(add_two(10))
from functools import partial
add_two = partial(add, 2)
print(add_two(10))
Demo
def add(a, b):
return a + b
Decorators
def say_hello(name):
return 'Hello, {}'.format(name)
def make_bold(func):
def func_wrapper(name):
return '<strong>{}</strong>'.format(func(name))
return func_wrapper
say_hello = make_bold(say_hello)
print(say_hello('Chimuelo'))
Decorators (syntactic sugar)
def make_bold(func):
def func_wrapper(name):
return '<strong>{}</strong>'.format(func(name))
return func_wrapper
@make_bold
def say_hello(name):
return 'Hello, {}'.format(name)
print(say_hello('Chimuelo')) Demo
Generators
● “yield” keyword
● Retorna un iterador / puede ser infinito
● Recuerda el local scope
● Es perezoso
● Demo: https://repl.it/@po5i/PythonMeetupGenerators
Type Annotations
● No se realiza chequeo antes de la ejecución
● Chequeo estático con mypy
● Docs: https://docs.python.org/3/library/typing.html
● Demo: https://github.com/po5i/python-and-types
● Compose
● Pipe
● Curry
● Fold
● Y más funciones todavía
● Demo
Librerías funcionales: toolz
Preguntas?
¡Gracias!
ευχαριστώ
Obrigado!
ありがとう
Thank You!
Presenta tus ideas
info@stackbuilders.com
Trabaja con nosotros
stackbuilders.com/join
Stack Builders Ecuador @stackbuildersstackbuilders

Más contenido relacionado

La actualidad más candente

La actualidad más candente (16)

Funciones logarìtmicas elias, ibañez, aramayo c y tedin
Funciones logarìtmicas  elias, ibañez, aramayo c y tedinFunciones logarìtmicas  elias, ibañez, aramayo c y tedin
Funciones logarìtmicas elias, ibañez, aramayo c y tedin
 
Curso lisp
Curso lispCurso lisp
Curso lisp
 
Tablas hash(Covadonga Quirós)
Tablas hash(Covadonga Quirós)Tablas hash(Covadonga Quirós)
Tablas hash(Covadonga Quirós)
 
Logaritmos
LogaritmosLogaritmos
Logaritmos
 
Seudocodigo
SeudocodigoSeudocodigo
Seudocodigo
 
Lectura lista encadenadas
Lectura lista encadenadasLectura lista encadenadas
Lectura lista encadenadas
 
Semana3 mate4-del 24 al 28 de agosto
Semana3 mate4-del 24 al 28 de agostoSemana3 mate4-del 24 al 28 de agosto
Semana3 mate4-del 24 al 28 de agosto
 
Funciones logaritmicas
Funciones logaritmicasFunciones logaritmicas
Funciones logaritmicas
 
Logaritmacion
LogaritmacionLogaritmacion
Logaritmacion
 
Graficar funciones ejercicios finales
Graficar funciones ejercicios finalesGraficar funciones ejercicios finales
Graficar funciones ejercicios finales
 
F7 Ejercicio 2 mates ya corregido
F7 Ejercicio 2 mates ya corregidoF7 Ejercicio 2 mates ya corregido
F7 Ejercicio 2 mates ya corregido
 
Ejercicio 2 mates
Ejercicio 2 matesEjercicio 2 mates
Ejercicio 2 mates
 
1... conversor de bases
1... conversor de bases1... conversor de bases
1... conversor de bases
 
Logaritmo
LogaritmoLogaritmo
Logaritmo
 
Expo fibonacci
Expo fibonacciExpo fibonacci
Expo fibonacci
 
Tablas Hash(David Sierra Marqués)
Tablas Hash(David Sierra Marqués)Tablas Hash(David Sierra Marqués)
Tablas Hash(David Sierra Marqués)
 

Similar a Python con un toque funcional

Similar a Python con un toque funcional (20)

Actividad 20
Actividad 20 Actividad 20
Actividad 20
 
Programacion en python_1
Programacion en python_1Programacion en python_1
Programacion en python_1
 
Python
Python Python
Python
 
Funcionesenlenguaje c
Funcionesenlenguaje cFuncionesenlenguaje c
Funcionesenlenguaje c
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
0.2 Conceptos Basicos C++ II
0.2  Conceptos Basicos C++ II0.2  Conceptos Basicos C++ II
0.2 Conceptos Basicos C++ II
 
Las funciones en JavaScript para la programación orientada a objetos
Las funciones en JavaScript para la programación orientada a objetosLas funciones en JavaScript para la programación orientada a objetos
Las funciones en JavaScript para la programación orientada a objetos
 
Estructura basica para_c_
Estructura basica para_c_Estructura basica para_c_
Estructura basica para_c_
 
Semana 3 Fundamentos de Python(Funciones y Métodos)
Semana 3   Fundamentos de Python(Funciones y Métodos)Semana 3   Fundamentos de Python(Funciones y Métodos)
Semana 3 Fundamentos de Python(Funciones y Métodos)
 
tema-1.pptx
tema-1.pptxtema-1.pptx
tema-1.pptx
 
Precalculo U1-1.pptx
Precalculo U1-1.pptxPrecalculo U1-1.pptx
Precalculo U1-1.pptx
 
C ++.ppt
C ++.pptC ++.ppt
C ++.ppt
 
Elementos basicos c
Elementos basicos cElementos basicos c
Elementos basicos c
 
Java 8 - Nuevas características
Java 8 - Nuevas característicasJava 8 - Nuevas características
Java 8 - Nuevas características
 
C ++
C ++C ++
C ++
 
Programando con Python
Programando con PythonProgramando con Python
Programando con Python
 
Charla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScriptCharla congreso web introducción programación funcional en JavaScript
Charla congreso web introducción programación funcional en JavaScript
 
Estructura de un programa
Estructura de un programaEstructura de un programa
Estructura de un programa
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 
Tema2[php]
Tema2[php]Tema2[php]
Tema2[php]
 

Más de Quito Lambda

Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeQuito Lambda
 
Aplicaciones móviles multiplataforma con React Native y Redux
Aplicaciones móviles multiplataforma con React Native y ReduxAplicaciones móviles multiplataforma con React Native y Redux
Aplicaciones móviles multiplataforma con React Native y ReduxQuito Lambda
 
Vue.js: Adaptando un enfoque funcional
Vue.js: Adaptando un enfoque funcionalVue.js: Adaptando un enfoque funcional
Vue.js: Adaptando un enfoque funcionalQuito Lambda
 
ReasonML is awesome
ReasonML is awesomeReasonML is awesome
ReasonML is awesomeQuito Lambda
 
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con AnsibleAnsible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con AnsibleQuito Lambda
 
El otro TDD: Type Driven Development
El otro TDD: Type Driven DevelopmentEl otro TDD: Type Driven Development
El otro TDD: Type Driven DevelopmentQuito Lambda
 

Más de Quito Lambda (6)

Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nube
 
Aplicaciones móviles multiplataforma con React Native y Redux
Aplicaciones móviles multiplataforma con React Native y ReduxAplicaciones móviles multiplataforma con React Native y Redux
Aplicaciones móviles multiplataforma con React Native y Redux
 
Vue.js: Adaptando un enfoque funcional
Vue.js: Adaptando un enfoque funcionalVue.js: Adaptando un enfoque funcional
Vue.js: Adaptando un enfoque funcional
 
ReasonML is awesome
ReasonML is awesomeReasonML is awesome
ReasonML is awesome
 
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con AnsibleAnsible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
 
El otro TDD: Type Driven Development
El otro TDD: Type Driven DevelopmentEl otro TDD: Type Driven Development
El otro TDD: Type Driven Development
 

Python con un toque funcional