functional python

Post on 08-Jan-2017

736 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

bit.ly/fppython

39

giovaneliberato@gmail.com about.me/giovaneliberato

pixelated-project.org

OBRIGADO!

top related