SlideShare une entreprise Scribd logo
1  sur  56
Télécharger pour lire hors ligne
Desmistificando Built-in 
Functions, Lambda, List 
Comprehension… 
matheper
Matheus Pereira
https://bitbucket.org/communitas/communities.practice
www.thedevelopersconference.com.br/tdc/2014/portoalegre/trilha-python
Python é uma linguagem de 
programação simples
Robusta, sofisticada e versátil
http://pt.slideshare.net/matheper/pythonificando-a-universidade
Programando de maneira 
Pythônica
Recursos opcionais, porém código 
(quase sempre) fica mais bonito
Não...
Sim!
Resultado 
E se eu quiser utilizar o índice?
Talvez (não)...
Sim!
Sim! 
? 
?
Atribuição Múltipla
Built-in Functions 
range 
len 
enumerate 
print*
Built-in Functions
Built-in Functions
Built-in Functions 
all(iterable) 
any(iterable) 
enumerate(sequence, start=0) 
filter(function, iterable) 
len(s) 
map(function, iterable, ...) 
range(start, stop[, step]) 
reduce(function, iterable[, initializer])
Built-in Functions
Built-in Functions
Built-in Functions 
all(iterable) 
any(iterable) 
enumerate(sequence, start=0) 
filter(function, iterable) 
len(s) 
map(function, iterable, ...) 
range(start, stop[, step]) 
reduce(function, iterable[, initializer])
filter(function, iterable) 
map(function, iterable, ...) 
reduce(function, iterable[, initializer])
len
map + len
map + len 
Built-in Function
def
def
Propósito de Funções 
Reduzir duplicação de código 
Modularizar código
Funciona?
Não.
Por quê? 
SyntaxError: invalid syntax
Por quê? 
map(function, iterable, ...)
Def não retorna uma função
Def nomeia uma função que pode 
ser chamada 
posteriormente
def
Lambda
Lambda 
lambda [lista-parametros] : expressão
Lambda
Lambda 
lambda retorna um 
objeto função 
a partir de uma expressão
Lambda 
Chamando função lambda
map + lambda
map + lambda
filter + lambda
reduce + lambda
reduce + lambda
List Comprehensions
List Comprehensions 
[ expressão-variavel-loop for variavel-loop in sequencia ]
List Comprehensions
Filtered List Comprehensions 
[ expressão-variavel-loop for variavel-loop in sequencia if 
expressão-boolean-variavel-loop ]
Filtered List Comprehensions
Casos Possíveis 
participantes.sort(key=lambda item: item['full_name']) 
filter( 
lambda item:item[‘creator’] == member_id, 
communities_local_roles, 
) 
authorized = ['Moderador', 'Owner', 'Manager'] 
roles = member.getRolesInContext(folder) 
return any([i for i in roles if i in authorized])
Simples é melhor que complexo 
https://docs.python.org/2/faq/programming.html#is-it-possible-to-write-obfuscated-one-liners-in-python
O que não vimos 
❏ Iterators 
❏ Generators 
❏ Decorators 
❏ Clousure 
❏ ...
Obrigado! 
matheper

Contenu connexe

Tendances

Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellSérgio Souza Costa
 
Ruby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasRuby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasÉverton Ribeiro
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesCarlos Santos
 
Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem cRafael_Lima87
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em PythonLuciano Ramalho
 
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
 
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarHaskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarCRISLANIO MACEDO
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?Diego Pacheco
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcionalLP Maquinas
 

Tendances (20)

Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo Haskell
 
Ponteiros de Função
Ponteiros de FunçãoPonteiros de Função
Ponteiros de Função
 
Programação funcional no dia a dia
Programação funcional no dia a diaProgramação funcional no dia a dia
Programação funcional no dia a dia
 
Haskell
HaskellHaskell
Haskell
 
Ruby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasRuby e Erlang de mãos dadas
Ruby e Erlang de mãos dadas
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
LabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - FunçõesLabMM4 (T13 - 12/13) - Funções
LabMM4 (T13 - 12/13) - Funções
 
Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem c
 
M2ti - Python Brasil
M2ti - Python BrasilM2ti - Python Brasil
M2ti - Python Brasil
 
Haskell
HaskellHaskell
Haskell
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em 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
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesarHaskell aula5 f.ordem-sup_modulos-cifra_cesar
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?TDC 2014 POA: Programacao funcional Por que Importa?
TDC 2014 POA: Programacao funcional Por que Importa?
 
Workshop Python.2
Workshop Python.2Workshop Python.2
Workshop Python.2
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcional
 

Similaire à Desmistificando Built-in Functions, Lambda e List Comprehension...

Python Funcional
Python FuncionalPython Funcional
Python Funcionalpugpe
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 
Programação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoProgramação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoArthur Xavier
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na práticaRafael Cassau
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonDiogo Gomes
 
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...tdc-globalcode
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?Denis Costa
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcionalGabriel Schade Cardoso
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
aula intro de Python sobre Funcoes.pdf
aula intro de  Python sobre  Funcoes.pdfaula intro de  Python sobre  Funcoes.pdf
aula intro de Python sobre Funcoes.pdfGabrielEduardo16342
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação FuncionalTales Andrade
 
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Danival Calegari
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 

Similaire à Desmistificando Built-in Functions, Lambda e List Comprehension... (20)

Pythonfuncional
PythonfuncionalPythonfuncional
Pythonfuncional
 
Python Funcional
Python FuncionalPython Funcional
Python Funcional
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Introdução ao paradigma funcional com scala
Introdução ao paradigma funcional com scalaIntrodução ao paradigma funcional com scala
Introdução ao paradigma funcional com scala
 
Programação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoProgramação funcional tipada: uma introdução
Programação funcional tipada: uma introdução
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
Funções em C
Funções em CFunções em C
Funções em C
 
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Programando em Python - Funções
Programando em Python -  FunçõesProgramando em Python -  Funções
Programando em Python - Funções
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
aula intro de Python sobre Funcoes.pdf
aula intro de  Python sobre  Funcoes.pdfaula intro de  Python sobre  Funcoes.pdf
aula intro de Python sobre Funcoes.pdf
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação Funcional
 
Monadic Design
Monadic DesignMonadic Design
Monadic Design
 
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014Java 8 - Expressões Lambda e Stream API - DevCamp 2014
Java 8 - Expressões Lambda e Stream API - DevCamp 2014
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 

Plus de Matheus Pereira

Dask - Parallelism for Machine Learning with Python
Dask - Parallelism for Machine Learning with PythonDask - Parallelism for Machine Learning with Python
Dask - Parallelism for Machine Learning with PythonMatheus Pereira
 
Semantic Collaboration Trajectories in Communities of Practice ITS 2018
Semantic Collaboration Trajectories in Communities of Practice ITS 2018Semantic Collaboration Trajectories in Communities of Practice ITS 2018
Semantic Collaboration Trajectories in Communities of Practice ITS 2018Matheus Pereira
 
Desenvolvimento Ágil de Aplicações Web com Python e Django
Desenvolvimento Ágil de Aplicações Web com Python e DjangoDesenvolvimento Ágil de Aplicações Web com Python e Django
Desenvolvimento Ágil de Aplicações Web com Python e DjangoMatheus Pereira
 
Web Social e Interoperabilidade Semântica
Web Social e Interoperabilidade SemânticaWeb Social e Interoperabilidade Semântica
Web Social e Interoperabilidade SemânticaMatheus Pereira
 
N'SAMAT - Um objeto de aprendizagem culturalmente contextualizado.
N'SAMAT - Um objeto de aprendizagem culturalmente contextualizado.N'SAMAT - Um objeto de aprendizagem culturalmente contextualizado.
N'SAMAT - Um objeto de aprendizagem culturalmente contextualizado.Matheus Pereira
 
Stack Open Source para desenvolvimento do AoMercado
Stack Open Source para desenvolvimento do AoMercadoStack Open Source para desenvolvimento do AoMercado
Stack Open Source para desenvolvimento do AoMercadoMatheus Pereira
 
Pythonificando a Universidade 2
Pythonificando a Universidade 2Pythonificando a Universidade 2
Pythonificando a Universidade 2Matheus Pereira
 
Git, o Universo e Tudo Mais
Git, o Universo e Tudo MaisGit, o Universo e Tudo Mais
Git, o Universo e Tudo MaisMatheus Pereira
 
Pythonificando a Universidade
Pythonificando a UniversidadePythonificando a Universidade
Pythonificando a UniversidadeMatheus Pereira
 
Mantendo seu trabalho a salvo com git
Mantendo seu trabalho a salvo com gitMantendo seu trabalho a salvo com git
Mantendo seu trabalho a salvo com gitMatheus Pereira
 
Mantendo seu Tempo a salvo com Python e Git
Mantendo seu Tempo a salvo com Python e GitMantendo seu Tempo a salvo com Python e Git
Mantendo seu Tempo a salvo com Python e GitMatheus Pereira
 

Plus de Matheus Pereira (13)

Dask - Parallelism for Machine Learning with Python
Dask - Parallelism for Machine Learning with PythonDask - Parallelism for Machine Learning with Python
Dask - Parallelism for Machine Learning with Python
 
Semantic Collaboration Trajectories in Communities of Practice ITS 2018
Semantic Collaboration Trajectories in Communities of Practice ITS 2018Semantic Collaboration Trajectories in Communities of Practice ITS 2018
Semantic Collaboration Trajectories in Communities of Practice ITS 2018
 
Desenvolvimento Ágil de Aplicações Web com Python e Django
Desenvolvimento Ágil de Aplicações Web com Python e DjangoDesenvolvimento Ágil de Aplicações Web com Python e Django
Desenvolvimento Ágil de Aplicações Web com Python e Django
 
Web semântica
Web semânticaWeb semântica
Web semântica
 
Web Social e Interoperabilidade Semântica
Web Social e Interoperabilidade SemânticaWeb Social e Interoperabilidade Semântica
Web Social e Interoperabilidade Semântica
 
N'SAMAT - Um objeto de aprendizagem culturalmente contextualizado.
N'SAMAT - Um objeto de aprendizagem culturalmente contextualizado.N'SAMAT - Um objeto de aprendizagem culturalmente contextualizado.
N'SAMAT - Um objeto de aprendizagem culturalmente contextualizado.
 
Stack Open Source para desenvolvimento do AoMercado
Stack Open Source para desenvolvimento do AoMercadoStack Open Source para desenvolvimento do AoMercado
Stack Open Source para desenvolvimento do AoMercado
 
Pythonificando a Universidade 2
Pythonificando a Universidade 2Pythonificando a Universidade 2
Pythonificando a Universidade 2
 
Git, o Universo e Tudo Mais
Git, o Universo e Tudo MaisGit, o Universo e Tudo Mais
Git, o Universo e Tudo Mais
 
Pythonificando a Universidade
Pythonificando a UniversidadePythonificando a Universidade
Pythonificando a Universidade
 
Mantendo seu trabalho a salvo com git
Mantendo seu trabalho a salvo com gitMantendo seu trabalho a salvo com git
Mantendo seu trabalho a salvo com git
 
Mantendo seu Tempo a salvo com Python e Git
Mantendo seu Tempo a salvo com Python e GitMantendo seu Tempo a salvo com Python e Git
Mantendo seu Tempo a salvo com Python e Git
 
Git init
Git initGit init
Git init
 

Desmistificando Built-in Functions, Lambda e List Comprehension...