O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
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)
434665576869374564356885276750406258025646605173717804024817290895365554...
LAZY EVALUATION
SO FAR…
20
▫︎ Higher Order e First-class functions
▫︎ No side-effects
▫︎ Function composition
▫︎ Closure
▫︎ Lazy evaluation...
COMPARANDO OS CONCEITOS
FP
▫︎ Higher Order
Functions
▫︎ Imutabilidade
▫︎ No side-effects
▫︎ Stateless and
functions
21
OOP
...
22
Dicas para iniciar com FP
Todas as funções devem aceitar parâmetros
Todas as funções devem retornar valores ou
outra fu...
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 para...
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!
Próximos SlideShares
Carregando em…5
×

Functional python

295 visualizações

Publicada em

O objetivo desta palestra é mostrar o poder da legibilidade do python combinado com a simplicidade da programação funcional. Com conceitos que vão além de lambdas, maps e reductions, apresentarei como utilizar programação funcional no dia a dia do desenvolvimento e quais os benefícios de performance, legibilidade e reuso de código, entre outros.

Publicada em: Educação
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Functional python

  1. 1. 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
  2. 2. GIOVANE LIBERATO (lambda dev: dev.favorite_quote)(eu) “git push -f origin master“ 2
  3. 3. UM CÓDIGO QUALQUER 3
  4. 4. UM CÓDIGO QUALQUER 4 E se tivermos que adicionar mas dois, três ou cinco tipos novos no sistema?
  5. 5. MULTIMETHOD DISPATCHER 5
  6. 6. MULTIMETHOD DISPATCHER 6 High order functions
  7. 7. MULTIMETHOD DISPATCHER 7 High order functions First class functions
  8. 8. GOTTA LOVE LIST COMPREHENSIONS 88
  9. 9. GOTTA LOVE LIST COMPREHENSIONS 99 No side effects
  10. 10. FUNCTION COMPOSITION 1010
  11. 11. FUNCTION COMPOSITION 1111 f(g(x), h(x))
  12. 12. FUNCTION COMPOSITION 1212 retirado de https://mathieularose.com/function-composition-in-python/
  13. 13. STATELESS E IMUTABILIDADE 1313
  14. 14. STATELESS E IMUTABILIDADE 1414 stateless arguments imutabilidade
  15. 15. CLOSURE
  16. 16. DECORATORS
  17. 17. DECORATORS cache_values(fib(n))
  18. 18. DECORATORS cache_values(fib(n)) Fun fact: fib(1000) 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080 322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875L
  19. 19. LAZY EVALUATION
  20. 20. SO FAR… 20 ▫︎ Higher Order e First-class functions ▫︎ No side-effects ▫︎ Function composition ▫︎ Closure ▫︎ Lazy evaluation ▫︎ Recursão
  21. 21. COMPARANDO OS CONCEITOS FP ▫︎ Higher Order Functions ▫︎ Imutabilidade ▫︎ No side-effects ▫︎ Stateless and functions 21 OOP ▫︎ Encapsulamento ▫︎ Herança ▫︎ Polimorfismo ▫︎ State e Behaviour
  22. 22. 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. 23. 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. 24. 24 Programação funcional não é difícil Programação funcional só não é familiar
  25. 25. Features funcionais do python 25
  26. 26. DESCONSTRUINDO A CLASSE PYTHON 2626 retirado de http://www.pedrowerneck.com/o-porque-do-self-explicito-em-python-pt-br.html
  27. 27. LAMBDA (FUNÇÕES ANÔNIMAS) 2727
  28. 28. LAMBDA (FUNÇÕES ANÔNIMAS) 2828
  29. 29. MAP 2929
  30. 30. REDUCE 3030
  31. 31. FILTER 3131
  32. 32. GENERATORS 3232
  33. 33. Mesclando OOP e FP 33
  34. 34. STRATEGY PATTERN EM JAVA 3434
  35. 35. Blah, muito verboso! (eu queria colocar isso no mesmo slide do código, mas não coube) 35
  36. 36. STRATEGY PATTERN EM PYTHON 3636
  37. 37. O QUE O PYTHON NÃO TEM 37 ▫︎ Variáveis imutáveis ▫︎ Tail Recursion Optimization ▫︎ Pattern matching
  38. 38. USANDO NO DIA A DIA 38 ▫︎ No side-effects ▫︎ Funções pequenas ▫︎ Function composition ▫︎ Lazy evaluation ▫︎ Imutabilidade
  39. 39. bit.ly/fppython 39
  40. 40. giovaneliberato@gmail.com about.me/giovaneliberato pixelated-project.org OBRIGADO!

×