View
738
Download
1
Category
Preview:
Citation preview
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 PYTHONFunçõ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) 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875L
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
giovaneliberato@gmail.com about.me/giovaneliberato
pixelated-project.org
OBRIGADO!
Recommended