desmistificando built-in functions, lambda e list comprehension

56
Desmistificando Built-in Functions, Lambda, List Comprehension… matheper

Upload: matheus-pereira

Post on 09-Jul-2015

92 views

Category:

Technology


2 download

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

Page 1: Desmistificando Built-in Functions, Lambda e List Comprehension

Desmistificando Built-in Functions, Lambda, List

Comprehension…

matheper

Page 2: Desmistificando Built-in Functions, Lambda e List Comprehension

Matheus Pereira

Page 3: Desmistificando Built-in Functions, Lambda e List Comprehension

https://bitbucket.org/communitas/communities.practice

Page 4: Desmistificando Built-in Functions, Lambda e List Comprehension

www.thedevelopersconference.com.br/tdc/2014/portoalegre/trilha-python

Page 5: Desmistificando Built-in Functions, Lambda e List Comprehension

Python é uma linguagem de programação simples

Page 6: Desmistificando Built-in Functions, Lambda e List Comprehension

Robusta, sofisticada e versátil

Page 7: Desmistificando Built-in Functions, Lambda e List Comprehension

http://pt.slideshare.net/matheper/pythonificando-a-universidade

Page 8: Desmistificando Built-in Functions, Lambda e List Comprehension

Programando de maneiraPythônica

Page 9: Desmistificando Built-in Functions, Lambda e List Comprehension

Recursos opcionais, porém código (quase sempre) fica mais bonito

Page 10: Desmistificando Built-in Functions, Lambda e List Comprehension

Não...

Page 11: Desmistificando Built-in Functions, Lambda e List Comprehension

Sim!

Page 12: Desmistificando Built-in Functions, Lambda e List Comprehension

Resultado

E se eu quiser utilizar o índice?

Page 13: Desmistificando Built-in Functions, Lambda e List Comprehension

Talvez (não)...

Page 14: Desmistificando Built-in Functions, Lambda e List Comprehension

Sim!

Page 15: Desmistificando Built-in Functions, Lambda e List Comprehension

Sim!

?

?

Page 16: Desmistificando Built-in Functions, Lambda e List Comprehension

Atribuição Múltipla

Page 17: Desmistificando Built-in Functions, Lambda e List Comprehension

Built-in Functions

rangelen

enumerateprint*

Page 18: Desmistificando Built-in Functions, Lambda e List Comprehension

Built-in Functions

Page 19: Desmistificando Built-in Functions, Lambda e List Comprehension

Built-in Functions

Page 20: Desmistificando Built-in Functions, Lambda e List Comprehension

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])

Page 21: Desmistificando Built-in Functions, Lambda e List Comprehension

Built-in Functions

Page 22: Desmistificando Built-in Functions, Lambda e List Comprehension

Built-in Functions

Page 23: Desmistificando Built-in Functions, Lambda e List Comprehension

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])

Page 24: Desmistificando Built-in Functions, Lambda e List Comprehension

filter(function, iterable)

map(function, iterable, ...)

reduce(function, iterable[, initializer])

Page 25: Desmistificando Built-in Functions, Lambda e List Comprehension

len

Page 26: Desmistificando Built-in Functions, Lambda e List Comprehension

map + len

Page 27: Desmistificando Built-in Functions, Lambda e List Comprehension

map + len

Built-in Function

Page 28: Desmistificando Built-in Functions, Lambda e List Comprehension

def

Page 29: Desmistificando Built-in Functions, Lambda e List Comprehension

def

Page 30: Desmistificando Built-in Functions, Lambda e List Comprehension

Propósito de Funções

Reduzir duplicação de códigoModularizar código

Page 31: Desmistificando Built-in Functions, Lambda e List Comprehension

Funciona?

Page 32: Desmistificando Built-in Functions, Lambda e List Comprehension

Não.

Page 33: Desmistificando Built-in Functions, Lambda e List Comprehension

SyntaxError: invalid syntax

Por quê?

Page 34: Desmistificando Built-in Functions, Lambda e List Comprehension

map(function, iterable, ...)

Por quê?

Page 35: Desmistificando Built-in Functions, Lambda e List Comprehension

Def não retorna uma função

Page 36: Desmistificando Built-in Functions, Lambda e List Comprehension

Def nomeia uma função que podeser chamada

posteriormente

Page 37: Desmistificando Built-in Functions, Lambda e List Comprehension

def

Page 38: Desmistificando Built-in Functions, Lambda e List Comprehension

Lambda

Page 39: Desmistificando Built-in Functions, Lambda e List Comprehension

Lambda

lambda [lista-parametros] : expressão

Page 40: Desmistificando Built-in Functions, Lambda e List Comprehension

Lambda

Page 41: Desmistificando Built-in Functions, Lambda e List Comprehension

Lambda

lambda retorna um objeto função

a partir de uma expressão

Page 42: Desmistificando Built-in Functions, Lambda e List Comprehension

Lambda

Chamando função lambda

Page 43: Desmistificando Built-in Functions, Lambda e List Comprehension

map + lambda

Page 44: Desmistificando Built-in Functions, Lambda e List Comprehension

map + lambda

Page 45: Desmistificando Built-in Functions, Lambda e List Comprehension

filter + lambda

Page 46: Desmistificando Built-in Functions, Lambda e List Comprehension

reduce + lambda

Page 47: Desmistificando Built-in Functions, Lambda e List Comprehension

reduce + lambda

Page 48: Desmistificando Built-in Functions, Lambda e List Comprehension

List Comprehensions

Page 49: Desmistificando Built-in Functions, Lambda e List Comprehension

List Comprehensions

[ expressão-variavel-loop for variavel-loop in sequencia ]

Page 50: Desmistificando Built-in Functions, Lambda e List Comprehension

List Comprehensions

Page 51: Desmistificando Built-in Functions, Lambda e List Comprehension

Filtered List Comprehensions

[ expressão-variavel-loop for variavel-loop in sequencia ifexpressão-boolean-variavel-loop ]

Page 52: Desmistificando Built-in Functions, Lambda e List Comprehension

Filtered List Comprehensions

Page 53: Desmistificando Built-in Functions, Lambda e List Comprehension

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])

Page 54: Desmistificando Built-in Functions, Lambda e List Comprehension

https://docs.python.org/2/faq/programming.html#is-it-possible-to-write-obfuscated-one-liners-in-python

Simples é melhor que complexo

Page 55: Desmistificando Built-in Functions, Lambda e List Comprehension

O que não vimos

❏ Iterators❏ Generators❏ Decorators❏ Clousure❏ ...

Page 56: Desmistificando Built-in Functions, Lambda e List Comprehension

Obrigado!

matheper