SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
T h e D e v e l o p e r s C o n f e r e n c e - P O A 2 0 1 5
FUNCTIONAL PYTHON
Funções e conceitos aplicados
1
GIOVANE LIBERATO
(lambda dev: dev.favorite_quote)(eu)
“git push -f origin master“
2
UM CÓDIGO QUALQUER
3
UM CÓDIGO QUALQUER
4
E se tivermos que adicionar mas dois, três ou cinco tipos novos no sistema?
MULTIMETHOD DISPATCHER
5
MULTIMETHOD DISPATCHER
6
High order functions
MULTIMETHOD DISPATCHER
7
High order functions
First class functions
GOTTA LOVE LIST COMPREHENSIONS
88
GOTTA LOVE LIST COMPREHENSIONS
99
No side effects
FUNCTION COMPOSITION
1010
FUNCTION COMPOSITION
1111
f(g(x), h(x))
FUNCTION COMPOSITION
1212
retirado de https://mathieularose.com/function-composition-in-python/
STATELESS E IMUTABILIDADE
1313
STATELESS E IMUTABILIDADE
1414
stateless arguments
imutabilidade
CLOSURE
DECORATORS
DECORATORS
cache_values(fib(n))
DECORATORS
cache_values(fib(n))
Fun fact: fib(1000)
43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080
322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875L
LAZY EVALUATION
SO FAR…
20
▫︎ Higher Order e First-class functions
▫︎ No side-effects
▫︎ Function composition
▫︎ Closure
▫︎ Lazy evaluation
▫︎ Recursão
COMPARANDO OS CONCEITOS
FP
▫︎ Higher Order
Functions
▫︎ Imutabilidade
▫︎ No side-effects
▫︎ Stateless and
functions
21
OOP
▫︎ Encapsulamento
▫︎ Herança
▫︎ Polimorfismo
▫︎ State e Behaviour
22
Dicas para iniciar com FP
Todas as funções devem aceitar parâmetros
Todas as funções devem retornar valores ou
outra função
Loops são proibidos
23
Programação funcional é útil
Quando se tem um tipo fixo de dados e um número variável de
operações
Quando se almeja paralelismo/programação concorrente
Programação funcional não é útil
Quando se tem dados e operações fixas que crescerão juntas
24
Programação funcional não é difícil
Programação funcional só não é familiar
Features funcionais do python
25
DESCONSTRUINDO A CLASSE PYTHON
2626
retirado de http://www.pedrowerneck.com/o-porque-do-self-explicito-em-python-pt-br.html
LAMBDA (FUNÇÕES ANÔNIMAS)
2727
LAMBDA (FUNÇÕES ANÔNIMAS)
2828
MAP
2929
REDUCE
3030
FILTER
3131
GENERATORS
3232
Mesclando OOP e FP
33
STRATEGY PATTERN EM JAVA
3434
Blah, muito verboso!
(eu queria colocar isso no mesmo slide do código, mas não coube)
35
STRATEGY PATTERN EM PYTHON
3636
O QUE O PYTHON NÃO TEM
37
▫︎ Variáveis imutáveis
▫︎ Tail Recursion Optimization
▫︎ Pattern matching
USANDO NO DIA A DIA
38
▫︎ No side-effects
▫︎ Funções pequenas
▫︎ Function composition
▫︎ Lazy evaluation
▫︎ Imutabilidade
bit.ly/fppython
39
giovaneliberato@gmail.com
about.me/giovaneliberato
pixelated-project.org
OBRIGADO!

Más contenido relacionado

La actualidad más candente

Análise exploratória e modelação com R parte 1
Análise exploratória e modelação com R parte 1Análise exploratória e modelação com R parte 1
Análise exploratória e modelação com R parte 1Lucas Castro
 
Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasAdriano Teixeira de Souza
 
12 algoritmos e funcoes recursivas
12   algoritmos e funcoes recursivas12   algoritmos e funcoes recursivas
12 algoritmos e funcoes recursivasRicardo Bolanho
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Técnicas de Programação Funcional
Técnicas de Programação FuncionalTécnicas de Programação Funcional
Técnicas de Programação FuncionalLambda 3
 
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...iMasters
 
Java script para adultos
Java script para adultosJava script para adultos
Java script para adultosDiego Honorio
 

La actualidad más candente (18)

Análise exploratória e modelação com R parte 1
Análise exploratória e modelação com R parte 1Análise exploratória e modelação com R parte 1
Análise exploratória e modelação com R parte 1
 
Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listas
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Listas em C
Listas em CListas em C
Listas em C
 
12 algoritmos e funcoes recursivas
12   algoritmos e funcoes recursivas12   algoritmos e funcoes recursivas
12 algoritmos e funcoes recursivas
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Aula 8
Aula 8Aula 8
Aula 8
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Técnicas de Programação Funcional
Técnicas de Programação FuncionalTécnicas de Programação Funcional
Técnicas de Programação Funcional
 
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
 
Lista duplamente encadeada
Lista duplamente encadeada Lista duplamente encadeada
Lista duplamente encadeada
 
Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3
 
Java script para adultos
Java script para adultosJava script para adultos
Java script para adultos
 
Monadic Design
Monadic DesignMonadic Design
Monadic Design
 
Lista simplesmente encadeada
Lista simplesmente encadeada Lista simplesmente encadeada
Lista simplesmente encadeada
 

Destacado

InvestingInConservation_Ex_Summary
InvestingInConservation_Ex_SummaryInvestingInConservation_Ex_Summary
InvestingInConservation_Ex_SummaryKatrin Olson
 
ASHOK LEYLAND PPT MBA
ASHOK LEYLAND PPT MBA ASHOK LEYLAND PPT MBA
ASHOK LEYLAND PPT MBA priya0594
 
Cs 10 -iis da vinci - galilei - open-coesione
Cs 10 -iis da vinci - galilei - open-coesioneCs 10 -iis da vinci - galilei - open-coesione
Cs 10 -iis da vinci - galilei - open-coesioneredazione gioianet
 
Technical booklet "Whats in your plate"
Technical booklet "Whats in your plate"Technical booklet "Whats in your plate"
Technical booklet "Whats in your plate"Gabriel BREZOIU
 
5° giornata new real volley gioia 3 1 bcc leverano
5° giornata   new real volley gioia 3 1 bcc leverano5° giornata   new real volley gioia 3 1 bcc leverano
5° giornata new real volley gioia 3 1 bcc leveranoredazione gioianet
 
CHIRIMEN open hardware became open source (English)
CHIRIMEN open hardware became open source  (English)CHIRIMEN open hardware became open source  (English)
CHIRIMEN open hardware became open source (English)Satoru Takagi
 
ձայնի ընկալումը կենդանիների կողմից և լսողության հիգիենա
ձայնի ընկալումը կենդանիների կողմից և լսողության հիգիենաձայնի ընկալումը կենդանիների կողմից և լսողության հիգիենա
ձայնի ընկալումը կենդանիների կողմից և լսողության հիգիենաManul06
 
Oral microflora /certified fixed orthodontic courses by Indian dental academy
Oral microflora /certified fixed orthodontic courses by Indian dental academy Oral microflora /certified fixed orthodontic courses by Indian dental academy
Oral microflora /certified fixed orthodontic courses by Indian dental academy Indian dental academy
 
Ejercicios de análisis sintáctico de oraciones simples
Ejercicios de análisis sintáctico de oraciones simplesEjercicios de análisis sintáctico de oraciones simples
Ejercicios de análisis sintáctico de oraciones simplesConchita Alvarez Lebredo
 

Destacado (19)

InvestingInConservation_Ex_Summary
InvestingInConservation_Ex_SummaryInvestingInConservation_Ex_Summary
InvestingInConservation_Ex_Summary
 
Cómo leer un libro
Cómo leer un libroCómo leer un libro
Cómo leer un libro
 
ASHOK LEYLAND PPT MBA
ASHOK LEYLAND PPT MBA ASHOK LEYLAND PPT MBA
ASHOK LEYLAND PPT MBA
 
StratAdviser facts sheet
StratAdviser facts sheetStratAdviser facts sheet
StratAdviser facts sheet
 
Comunicato stampa 1
Comunicato stampa  1Comunicato stampa  1
Comunicato stampa 1
 
deni.2nd review
deni.2nd reviewdeni.2nd review
deni.2nd review
 
Cs 10 -iis da vinci - galilei - open-coesione
Cs 10 -iis da vinci - galilei - open-coesioneCs 10 -iis da vinci - galilei - open-coesione
Cs 10 -iis da vinci - galilei - open-coesione
 
Technical booklet "Whats in your plate"
Technical booklet "Whats in your plate"Technical booklet "Whats in your plate"
Technical booklet "Whats in your plate"
 
Smarriti
SmarritiSmarriti
Smarriti
 
Khursheed Alam Cv
Khursheed Alam CvKhursheed Alam Cv
Khursheed Alam Cv
 
5° giornata new real volley gioia 3 1 bcc leverano
5° giornata   new real volley gioia 3 1 bcc leverano5° giornata   new real volley gioia 3 1 bcc leverano
5° giornata new real volley gioia 3 1 bcc leverano
 
CHIRIMEN open hardware became open source (English)
CHIRIMEN open hardware became open source  (English)CHIRIMEN open hardware became open source  (English)
CHIRIMEN open hardware became open source (English)
 
Cómo pintarse las uñas
Cómo pintarse las uñasCómo pintarse las uñas
Cómo pintarse las uñas
 
ձայնի ընկալումը կենդանիների կողմից և լսողության հիգիենա
ձայնի ընկալումը կենդանիների կողմից և լսողության հիգիենաձայնի ընկալումը կենդանիների կողմից և լսողության հիգիենա
ձայնի ընկալումը կենդանիների կողմից և լսողության հիգիենա
 
Probiotics in vaginal infections
Probiotics in vaginal infectionsProbiotics in vaginal infections
Probiotics in vaginal infections
 
Oral microflora /certified fixed orthodontic courses by Indian dental academy
Oral microflora /certified fixed orthodontic courses by Indian dental academy Oral microflora /certified fixed orthodontic courses by Indian dental academy
Oral microflora /certified fixed orthodontic courses by Indian dental academy
 
Ejercicios de análisis sintáctico de oraciones simples
Ejercicios de análisis sintáctico de oraciones simplesEjercicios de análisis sintáctico de oraciones simples
Ejercicios de análisis sintáctico de oraciones simples
 
Morfo
MorfoMorfo
Morfo
 
K to 12 TLE Curriculum Guide
K to 12 TLE Curriculum GuideK to 12 TLE Curriculum Guide
K to 12 TLE Curriculum Guide
 

Similar a Funcional Python - Conceitos Aplicados

Python Funcional
Python FuncionalPython Funcional
Python Funcionalpugpe
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçaossuserc6132d
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonrodrigopex
 
Leonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesLeonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesDevCamp Campinas
 

Similar a Funcional Python - Conceitos Aplicados (10)

Pythonfuncional
PythonfuncionalPythonfuncional
Pythonfuncional
 
Python Funcional
Python FuncionalPython Funcional
Python Funcional
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Leonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional InterfacesLeonardo Zamariola - High Order Functions e Functional Interfaces
Leonardo Zamariola - High Order Functions e Functional Interfaces
 
01-Paradigmas.pdf
01-Paradigmas.pdf01-Paradigmas.pdf
01-Paradigmas.pdf
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Visualg
VisualgVisualg
Visualg
 

Más de Giovane Liberato

Refatorando com a API funcional do Java
Refatorando com a API funcional do JavaRefatorando com a API funcional do Java
Refatorando com a API funcional do JavaGiovane Liberato
 
Front end para back enders: Dicas de como se virar no universo paralelo
Front end para back enders: Dicas de como se virar no universo paraleloFront end para back enders: Dicas de como se virar no universo paralelo
Front end para back enders: Dicas de como se virar no universo paraleloGiovane Liberato
 
Front end pra back enders: dicas pra se virar no universo paralelo
Front end pra back enders: dicas pra se virar no universo paraleloFront end pra back enders: dicas pra se virar no universo paralelo
Front end pra back enders: dicas pra se virar no universo paraleloGiovane Liberato
 
Google App Engine e NoSQL: Alta disponibilidade
Google App Engine e NoSQL: Alta disponibilidadeGoogle App Engine e NoSQL: Alta disponibilidade
Google App Engine e NoSQL: Alta disponibilidadeGiovane Liberato
 
Sistemas de recomendação na educação
Sistemas de recomendação na educaçãoSistemas de recomendação na educação
Sistemas de recomendação na educaçãoGiovane Liberato
 
A cobra vai fumar(e tomar um golinho de café) - Jython
A cobra vai fumar(e tomar um golinho de café) - JythonA cobra vai fumar(e tomar um golinho de café) - Jython
A cobra vai fumar(e tomar um golinho de café) - JythonGiovane Liberato
 
Jython - "A cobra vai fumar (e tomar um golinho de café)"
Jython - "A cobra vai fumar (e tomar um golinho de café)"Jython - "A cobra vai fumar (e tomar um golinho de café)"
Jython - "A cobra vai fumar (e tomar um golinho de café)"Giovane Liberato
 
Um site em 5 minutos com bottle.py
Um site em 5 minutos com bottle.pyUm site em 5 minutos com bottle.py
Um site em 5 minutos com bottle.pyGiovane Liberato
 
OWASP Top 10 - A web security cookbook
OWASP Top 10 - A web security cookbookOWASP Top 10 - A web security cookbook
OWASP Top 10 - A web security cookbookGiovane Liberato
 

Más de Giovane Liberato (9)

Refatorando com a API funcional do Java
Refatorando com a API funcional do JavaRefatorando com a API funcional do Java
Refatorando com a API funcional do Java
 
Front end para back enders: Dicas de como se virar no universo paralelo
Front end para back enders: Dicas de como se virar no universo paraleloFront end para back enders: Dicas de como se virar no universo paralelo
Front end para back enders: Dicas de como se virar no universo paralelo
 
Front end pra back enders: dicas pra se virar no universo paralelo
Front end pra back enders: dicas pra se virar no universo paraleloFront end pra back enders: dicas pra se virar no universo paralelo
Front end pra back enders: dicas pra se virar no universo paralelo
 
Google App Engine e NoSQL: Alta disponibilidade
Google App Engine e NoSQL: Alta disponibilidadeGoogle App Engine e NoSQL: Alta disponibilidade
Google App Engine e NoSQL: Alta disponibilidade
 
Sistemas de recomendação na educação
Sistemas de recomendação na educaçãoSistemas de recomendação na educação
Sistemas de recomendação na educação
 
A cobra vai fumar(e tomar um golinho de café) - Jython
A cobra vai fumar(e tomar um golinho de café) - JythonA cobra vai fumar(e tomar um golinho de café) - Jython
A cobra vai fumar(e tomar um golinho de café) - Jython
 
Jython - "A cobra vai fumar (e tomar um golinho de café)"
Jython - "A cobra vai fumar (e tomar um golinho de café)"Jython - "A cobra vai fumar (e tomar um golinho de café)"
Jython - "A cobra vai fumar (e tomar um golinho de café)"
 
Um site em 5 minutos com bottle.py
Um site em 5 minutos com bottle.pyUm site em 5 minutos com bottle.py
Um site em 5 minutos com bottle.py
 
OWASP Top 10 - A web security cookbook
OWASP Top 10 - A web security cookbookOWASP Top 10 - A web security cookbook
OWASP Top 10 - A web security cookbook
 

Funcional Python - Conceitos Aplicados