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!

Functional python