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

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