Cotada para ser a última versão da família 2.x, Python 2.7 vem   com várias features do Python 3.x, além de incluir

– Set e Dict comprehensions
– Um novo módulo IO, reescrito em C
– Tipo Ordered-Dictionary

entre outras novidades.

Rodrigo Lira

Semana passada, houve uma reunião do Grupo de Estudos Python Poli, lá no laboratório da graduação. Basicamente o intuito era demonstrar o básico da linguagem – interpretador interativo,tipos de dados, if/else – aos calouros do nosso curso. Para minha surpresa realmente o pessoal compareceu (~25 pessoas) e vi que muitos ficaram maravilhados com Python.

Mas nem tudo foram rosas…

Quando eu fiz o slide pensei em fazer algo dinâmico, com exemplos para serem testados eu só aprendo assim , mas, essa parte ficou comprometida devido a apenas alguns terem login no lab, e algumas máquinas estarem precisando de manutenção. No final eu acabei fazendo os exemplos no pc da apresentação mesmo.

Com isso aprendi duas coisas,  palestrar não é tão simples e que por mais que pense em todas as variáveis, sempre há um imprevisto.

Fotos? Na hora, não lembrei de tirar nenhuma 😐

A apresentação aconteceu no dia 26 de maio de 2010, às 10h45.

Rodrigo Lira

PythonTive uma surpresa muito boa hoje ouvindo o último nerdcast do  Jovem Nerd que tem como tema “Profissão: Programador”. Ao surgir a pergunta, “Qual linguagem eu devo começar a programar?”, o Marcos Gomes do Boo-box respondeu :

“Eu tenho uma dica, aprenda Python por uma série de motivos, mas, Python
por ser uma linguagem que é divertida de programar  porque é uma linguagem que as pessoas programam por gostarem de programar.”

Ele ainda segue falando que está contratando programadores Python e informa o quanto o mercado está pagando por eles. O nerdcast pode ser baixado aqui mas é apartir de 1h26″ que Python surgi na conversa.

Fico feliz por ver alguém que não seja envolvido com a linguagem falando tão bem, e tenho certeza que a simples menção de Python em um podcast tão popular quanto o Jovem Nerd fará muitas pessoas voltarem os olhos para ela.

We got the power !

Rodrigo Lira

Python Image Library (PIL) é uma biblioteca que permite criar, modificar e converter arquivos de imagens numa gama de formatos usando Python. No site é possível baixar a biblioteca para as principais plataformas e versões de Python – ainda não está disponível para o 3.x da linguagem. Quem utiliza o Linux pode baixar através do Synaptic com o seguinte comando

#apt-get install python-imaging

Manusear imagens com módulo Image da biblioteca PIL é bem simples

>>> from PIL import Image
>>> imagem = Image.open("linux-potato.jpg")
>>> imagem.size,imagem.mode,imagem.format
((320, 272), 'RGB', 'JPEG')

Abrimos uma imagem e através dos atributos size, mode, format descobrimos algumas informações sobre ela.

>>> from PIL import Image
>>> imagem = Image.open("linux-potato.jpg")
>>> imagem.save("potato.bmp")

Esse trecho de código salva a imagem no formato Bitmap. Além do formato Bitmap a PIL oferece uma série de formatos que podem ser utilizados com o método save, faça o seguinte para ver os formatos

>>> from PIL import Image
>>> Image.init()
>>> Image.SAVE.keys()
['PCX', 'HDF5', 'TIFF', 'BUFR', 'IM', 'GRIB', 'PPM', 'SPIDER', 'XBM', 'GIF','BMP', 'PALM', 'JPEG', 'FITS', 'PDF', 'MSP', 'EPS', 'WMF', 'PNG']
>>> from PIL import Image
>>> imagem = Image.open("linux-potato.jpg")
>>> imagem.thumbnail((128,128))  # Tamanho 128x128
>>> imagem=imagem.rotate(180)
>>> image.save("potato-thumbnail.jpg")

Com o método thumbnail é possível criar miniaturas, e o rotate , rotacionar imagens. Com isso acabo, minha breve explicação sobre o módulo Image da biblioteca PIL, mas deixo dois links interessantes , o Brincando com Python + PIL e  o link para secção de imagens do cookbook da Python Brasil, onde pode ser encontrado alguns scripts interessantes que utilizam PIL.

| http://nadiana.com/pil-tutorial-basic-advanced-drawing

Rodrigo Lira

Além das reuniões mensais agora o pessoal do PUG-PE pode se reunir no canal do Freenode. O #pug-pe foi criado nesse último final de semana e já possui participantes assíduos! Eu vivo por lá, rodrigoclira  😀

Rodrigo Lira

Frequentemente perguntam-me  onde pode ser encontrado documentação para estudar Python, sempre respondo

– “Internet !

E  não estou sendo chato, ou impaciente mas  é a realidade. A internet é uma fonte inesgotável de informação sobre Python, o único problema é conseguir filtrar o que realmente vinrá a somar no seu aprendizado. Enfim para não falar o óbvio novamente, criei uma seção no blog para servir como repositório de links para livros, tutoriais e sites importantes.

p.s. A foto não tem nenhuma relação com o post mas achei muito boa 😀

Rodrigo Lira

Descobri recentemente que o Google tem uma API para geração de gráficos on line, o Google Chart API. O mais legal é que há alguns módulos em Python, para essa API como o pygooglechart e o google-chartwrapper.
A utilização desses módulos é bem simples, veja o código abaixo  que cria um gráfico de Pizza 3D com o pygooglechart.
from pygooglechart import PieChart3D
pie = PieChart3D(200,200) # Tamanho em pixels da imagem
info = [15,80,5] # os três dados que serão mostrados no Gráfico.
pie.add_data(info)
pie.download('pie.png')
print pie.get_url() # retorna uma url onde pode ser visualizado o gráfico
Através dos métodos disponíveis em cada instância é possível configurar título,  legendas para os dados, entre outros.
O resultado será
Seguindo o exemplo que está na página do google-chartwrapper o gráfico de Pizza 3D poderia ser criado da seguinte forma
>>> from GChartWrapper import Pie3D
>>> Pie3D([5,10]).title('Hello Pie').color('red','lime').label('hello','world')

Rodrigo Lira

Recentemente estava procurando um widget em PyGtk ou Tkinter  para representar uma matriz NxM, recebi o conselho na lista da Python Brasil que poderia ser usado “GtkListModel associada com a respectiva GtkTreeView” mas googlando encontrei algo mais simples com Tkinter.

gridview

Encontrei o código original neste fórum mas alterei alguns trechos  para sua utilização ficar mais simples e flexível.

1. Com uma  mudança de ordens de parâmetros tornei  possível acessar e alterar as células no formato LINHAxCOLUNA através dos métodos get  e set respectivamente.

2. Agora o widget herda de Tkinter.Frame o que torna a sua utilização mas flexível.

Não sou muito fã da Tkinter devido seu estilo antiquado mas o fato de já está incluso na biblioteca padrão de Python pesou a seu favor na hora de utiliza-la no meu projeto. O código atualizado do widget  pode ser visualizado aqui.

Rodrigo Lira