desmistificando built-in functions, lambda e list comprehension
DESCRIPTION
Python é uma linguagem de programação simples, porém robusta, sofisticada e com diversos mecanismos poderosos como suas funções e listas. Ahh, Python e suas peculiaridades! Built-in Functions, Lambda e List Comprehension? O que são? Por que são? O que fazem? De onde vem? De que se alimentam? Serão apresentados alguns recursos (quase) avançados relacionados às funções e listas. Boa parte destes recursos são opcionais, mas conhecê-los, saber utilizá-los e principalmente entendê-los pode simplificar nossas tarefas de desenvolvimento e, também, deixar nosso código (nem sempre) mais claro.TRANSCRIPT
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 maneiraPythô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
rangelen
enumerateprint*
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ódigoModularizar código
Funciona?
Não.
SyntaxError: invalid syntax
Por quê?
map(function, iterable, ...)
Por quê?
Def não retorna uma função
Def nomeia uma função que podeser 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 ifexpressã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])
https://docs.python.org/2/faq/programming.html#is-it-possible-to-write-obfuscated-one-liners-in-python
Simples é melhor que complexo
O que não vimos
❏ Iterators❏ Generators❏ Decorators❏ Clousure❏ ...
Obrigado!
matheper