Desmistificando Built-in Functions, Lambda e List Comprehension...Matheus Pereira
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.
Se você não usa geradores, está deixando de aproveitar um recurso poderoso de Python. Partimos do pattern Iterator e mostramos seus usos práticos e suporte nativo na linguagem, incluindo funções e expressões geradoras, que permitem lidar com massas de dados muito grandes de modo eficiente e com baixo consumo de memória. Ao final, mostramos o uso prático de funções geradoras em uma ferramenta de conversão de bancos de dados.
Desmistificando Built-in Functions, Lambda e List Comprehension...Matheus Pereira
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.
Se você não usa geradores, está deixando de aproveitar um recurso poderoso de Python. Partimos do pattern Iterator e mostramos seus usos práticos e suporte nativo na linguagem, incluindo funções e expressões geradoras, que permitem lidar com massas de dados muito grandes de modo eficiente e com baixo consumo de memória. Ao final, mostramos o uso prático de funções geradoras em uma ferramenta de conversão de bancos de dados.
Slide completo sobre a Linguagem de Programação Lua.
Conteúdo:
- Definição.
- Mercado.
- Quem a utiliza.
- Características.
- Sintaxe da Linguagem.
- Códigos de Exemplos.
Programação funcional tipada: uma introduçãoArthur Xavier
Programação funcional é um assunto pertinente que todo mundo tem ouvido falar, principalmente se você é desenvolvedor front-end. Mas afinal, o que é, pra que serve e como você usar pra escrever código mais correto, mais simples e mais sustentável? Nesta parte do workshop serão respondidas todas estas questões e veremos na prática como utilizar conceitos de programação funcional para aprender a escrever uma pequena aplicação em Elm, uma linguagem de programação funcional pura para aplicações front-end com foco em simplicidade e facilidade de aprendizado.
Slide completo sobre a Linguagem de Programação Lua.
Conteúdo:
- Definição.
- Mercado.
- Quem a utiliza.
- Características.
- Sintaxe da Linguagem.
- Códigos de Exemplos.
Programação funcional tipada: uma introduçãoArthur Xavier
Programação funcional é um assunto pertinente que todo mundo tem ouvido falar, principalmente se você é desenvolvedor front-end. Mas afinal, o que é, pra que serve e como você usar pra escrever código mais correto, mais simples e mais sustentável? Nesta parte do workshop serão respondidas todas estas questões e veremos na prática como utilizar conceitos de programação funcional para aprender a escrever uma pequena aplicação em Elm, uma linguagem de programação funcional pura para aplicações front-end com foco em simplicidade e facilidade de aprendizado.
Esse material tem o objetivo de ser uma introdução as principais características da linguagem Python, tais como sintaxe básica, tipos de dados, operadores, estrutura condicional, estrutura de repetição e orientação a objetos. Após a introdução a linguagem, o Django é apresentado de maneira pratica, desenvolvendo um CRUD para exemplificar suas principais características e vantagens, esse CRUD é feito passo a passo e após seu termino é feito uma introdução básica aos recursos do Admin do Django.
Rust é uma linguagem estremamente rápida que não tem runtime, portanto pode ser integrada a qualquer outro runtime. Descubra como é fácil estender Python com Rust!
Apresentação realizada pelo Eraldo Guerra sobre Blender com Python no XII Encontro do Grupo de Usuários de Python de Pernambuco no Centro de Informática/UFPE em 07/05/2011.
Palestra ministrada por Jones Xavier sobre seu projeto de análise de dados em cima do Wikipedia em Português - no XII Encontro do Grupo de Usuários de Python de Pernambuco (PUG-PE) no CIN/UFPE 07/05/2011
Desenvolvendo aplicativos web com o google app enginepugpe
Palestra realizada por Flávio Juvenal no X Encontro do Grupo de Usuários de Python de Pernambuco (10/02/2011) na Livraria Cultura com o tema Desenvolvendo Apps Web com o Google AppEngine e Python
Pip - Instalando Pacotes facilmente para Pythonpugpe
Apresentação realizada no IX Encontro do Grupo de Usuários de Python de Pernambuco por Luciano Rodrigues na Unibratec - 27/11/2010 - I Toró de Palestras
2. Rodrigo Lira
Aluno do 5º período de Engenharia
da Computação na UPE.
Estuda Python desde o final de 2008.
Participa dos grupos Python Poli e do
PUG-PE.
http://tiny.cc/rodrigolira
3. Programação Funcional
Paradigma que enfatiza a aplicação de
funções.
LISP (LISt Processing) criada em 1958 no
MIT por John McCarthy.
Haskell, Common Lisp, Miranda, Erlang,
Scheme, ML .
4. Programação Funcional
--Haskell
somaLista :: [Int] -> Int
somaLista [] = 0
somaLista (a:x) = a + somaLista x
5. Python Funcional
Multiparadigma (Imperativo, OO, Funcional)
Possui muitas das ferramentas funcionais
desde a sua versão 1.0 .
lambda, map, filter, reduce, zip ,list
comprehensions providenciam as
ferramentas básicas para programação
funcional.
6. Python Funcional
Função Versão Contribuição
lambda, map, filter, reduce 1.0.0 Amrit Prem
sum 2.3 ----
any,all 2.5 Raymond
Hettinger
List comprehensions, zip 2.0 beta 1 Greg Ewing,
Skip Montanaro e Thomas
Wouters
7. Lambda
Função anônima.
Seu corpo deve conter apenas expressão.
Não possui a instrução return.
Seguem o modelo:
lambda arg1,arg2,arg3,argn: expressão
9. BDFL x Lambda
“A maioria dos usuários do Python não estão
familiarizados com Lisp ou Scheme, por isso o
nome é confuso, também existe um equívoco
generalizado que lambda possa fazer coisas
que uma função aninhada não pode. (...)
Mesmo com um nome melhor, eu acho que ter
as duas opções lado a lado, exige apenas os
programadores a pensar em fazer uma escolha
que é irrelevante para o seu programa, não
tendo a escolha simplifica o processo de
pensamento. Além disso, uma vez que map(),
filter() e reduce() sumirão, não há um monte de
lugares onde você realmente precisa escrever
funções lambda;“
Guido van Rossum http://is.gd/e8cCv
10. Map
Função de mapeamento.
map(função ou None,seq1,seq2,seqn)
Retorna uma lista com o resultado de
função(item).
Retorna um iterator em Python 3.
12. Filter
Aplicação de filtro
filter(função ou None,seq)
Tem como retorno uma sequência formada
por todos os itens em que func(item) é True.
Ifilterfalse tem comportamento inverso.
Retornar um iterator em Python 3.
16. List Comprehesions
[i for i in range(20) if i%2 == 0]
#[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[ord(x) for x in "Python"]
[80, 121, 116, 104, 111, 110]
#Diretórios
import os
[path for path in os.listdir(".") if os.path.isdir(path)]
17. Reduce
Aplica uma função binária aos elementos da
sequência, e depois reduz a um único valor.
reduce(função,seq1[,inicializador])
Pode receber uma valor para inicialização.
A partir de Python 2.7 foi movido para
functools.
19. Round 2
Se você está matando reduce(), por
que você está mantendo map() e
filter()?
Eu não estou matando reduce() porque eu odeio
programação funcional, eu estou matando porque
quase todos os códigos usando reduce() é menos
legível que a mesma coisa escrita, utilizando um loop e
uma variável acumulador. Por outro lado, map() e filter()
muitas vezes são úteis e quando usado com uma
função pré-existentes (por exemplo, um built-in) são
mais claros do que uma list comprehensions ou
generators.
Python 3000 FAQ http://is.gd/egQKe
20. Any/All
all – Retorna True se todos os elementos do
iterable for True caso contrário retorna False.
Se o iterable for vazio retorna True.
any – Retorna True se algum dos elementos
do iterable for True caso contrário retorna
False. Se o iterable for vazio retorna False.
Ambas foram pedidos de Guido.
21. Any/All
any((True,False,True,False,False)) #True
#Há algum múltiplo de 3 ou 5
any(map(lambda x: x%3==0 or x%5==0,(7,11,3,4,2)))
#True
#Só existe arquivo na pasta raiz?
from os import path
from os import listdir
all([path.isfile(caminho) for caminho in listdir('/')])
22. Zip
Retorna uma lista cujos elementos são
tuplas resultantes de cada um dos
elementos de uma ou mais sequências de
entrada seq1, seq2, seqN.
zip(seq1,seq2,seqn)
A lista resultante é truncada ao tamanho
para o tamanho da menor lista.
23. Zip
Unzip
zip(*zipada)
nomes = [ ("Rodrigo","Lira"),("Rui","Ricardo")]
nome,sobrenome = zip(*nomes)
#sobrenome ('Lira', 'Ricardo')
#nome ('Rodrigo', 'Rui')