- ATENÇÃO: Este site está aposentado.
Não receberá posts nem comentários novos. Para ler dicas mais recentes, vá no Stack Overflow. Livros da equipe do CODARE
Expressões Regulares
Uma Abordagem Divertida
de Aurelio Marinho Jargas
Shell Script Profissional
de Aurelio Marinho Jargas
PHP-GTK
de Pablo Dall'Oglio
PHP Programando com Orientação a Objetos
de Pablo Dall'Oglio
Ruby: Conhecendo a Linguagem
de Eustáquio Rangel (TaQ)
Category Archives: Python
Python: Adicionar argumentos ao método Bind (wxPython)
O método Bind() no wxPython permite associar métodos a eventos. Por exemplo: Bind(wx.EVT_BUTTON, sys.exit(), id=ID_BUTTON) Ao clicar, o método exit() é disparado. Para permitir que o método disparado receba argumentos, podemos utilizar: botao = wx.Button(self, -1, “Instalar”) Bind(wx.EVT_BUTTON, lambda event: Metodo(event, … Continue reading
Posted in Python
2 Comments
Python: Introspeção de atributos e métodos com vars(), locals() e dir()
Para descobrir os atributos de um objeto podemos utilizar: objeto.__dict__ vars(objeto) Para descobrir os atributos de uma classe: vars(Classe()) Se utilizar vars() sem argumentos, funciona como locals(), listando todas as variáveis. Para listar métodos e atributos de um objeto: dir(objeto)
Python: Teste condicional e estruturas de dados vazias
Classes que implementam o método __len__, quando testadas com if, este método é invocado. Portanto, para uma lista vazia, o teste falha. x = []; if x: print “OK” # Nao imprime nada Para mudar este comportamento, basta reimplementar o … Continue reading
Python: Pegadinhas com += e list.extend()
Palavras-chave: Python, pegadinhas, gotchas, pitfalls, listas, extends Em Python o operador de soma e atribuição += pode ser usado na forma “a += 1” que tem o mesmo significado que a expressão “a = a + 1“. Até aí nada … Continue reading
Posted in Python
2 Comments
Python: Singleton
Palavras-chave: Python, Design Patterns, Padrões de Projeto, OOP, POO Um Singleton é um dos padrões de projeto descrito no famoso livro “Design Patterns” escrito pela GoF (Gang of Four) e o seu funcionamento é bastante simples: uma classe é chamada … Continue reading
Posted in Python
6 Comments
Python: Cópia "rasa" de listas
Palavras-chave: Python, listas, cópia, objetos Em Python as variáveis não armazenam os objetos quando atribuímos um valor à elas. Ao invés disso uma variável em Python guarda apenas uma referência para o objeto em questão. Uma prova disto pode ser … Continue reading
Posted in Python
6 Comments
Python: Desligando o prompt de comandos no Windows
Palavras-chave: Python, command prompt, prompt de comandos, prompt, DOS, Windows Quando executamos um programa “.py” no Windows uma janela de prompt irá aparecer automaticamente para que as eventuais saídas de texto do seu programa sejam enviadas para lá. Mas essa … Continue reading
Python: Fazer switch/case com dicionários
Palavras-chave: Python, dicionários, switch, case Algumas pessoas reclamam de que Python não possui uma instrução switch/case, que permite executar trechos de código dependendo do valor de uma determinada variável. Python realmente não disponibiliza essa funcionalidade, mas podemos simulá-la utilizando funções … Continue reading
Posted in Python
5 Comments
Python: Listagem com cores alternadas (zebra)
Palavras-chave: Python, listagem, cores, zebrado, zebra list Em aplicações Web é bastante comum exibir grandes listagens em uma página. Para facilitar a leitura dessas listagens, quase sempre utilizamos do artifício de alternar as cores de fundo das linhas exibidas. O … Continue reading
Posted in Python
2 Comments
Python: Evitando o excesso de "or" em condicionais
Palavras-chave: Python, or, in, if, while, condicional, pythonico Quem está começando no mundo do desenvolvimento Python e não conhece muito a linguagem, costuma criar cláusulas condicionais muito longas utilizando o operador “or”: if a == “foo” or a == “bar” … Continue reading
Python: split() de palavras com "strings protegidas"
Palavras-chave: Python, split, tokenizacão, análise léxica, parser, strings, quotes, aspas O módulo re possui a conveniente função split(), que faz o mesmo que o split() dos strings, mas aceita expressões regulares como separador. Isto pode ser aproveitado para fazer um … Continue reading
Posted in Python
2 Comments
Python: Documentação e testes
Palavras-chave: testes, unittest, docstring, documentação, testes unitários, rest, docutils Todo desenvolvedor sabe que fazer testes é superimportante e que fazer documentação também é algo que melhora a qualidade de seus produtos. Mas num primeiro momento, fazer testes é trabalhoso e … Continue reading
Python: Descobrir qual o diretório do usuário
Palavras-chave: userdir, home, homedrive, homepath, arquivo de configuração Frequentemente precisamos guardar preferências do usuário de nossos programas em algum arquivo de configuração. Em ambientes UNIX/Linux a prática diz que esses arquivos devem ser guardados dentro do diretório $HOME e de … Continue reading
Python: Imprimir mensagens de erro (stderr)
Palavras-chave: print, stdin, stdout, stderr, erro, dispositivos, entrada/saída Quando estamos fazendo um programa que roda na linha de comando e precisamos fazer com que esse programa imprima uma mensagem de erro ou alerta, é aconselhável enviar essa mensagem para a … Continue reading
Posted in Python
Comments Off on Python: Imprimir mensagens de erro (stderr)
Python: UTF8 e SQLObject
Palavras-chave: Unicode, utf8, SQLObject, TurboGears, erro UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xc3 in position 50: ordinal not in range(128) Este erro pode ocorrer quando se tenta executar queries que envolvem caracteres Unicode (na query em si ou no resultado) … Continue reading
Posted in Python
Comments Off on Python: UTF8 e SQLObject
Python: Criando pacotes e módulos
Palavras-chave: pacote, módulo, import Criar um módulo em Python é extremamente simples. Basta apenas criar um arquivo .py dentro de algum diretório listado em sys.path. Alguns desenvolvedores também gostariam de fazer pacotes com módulos em Python. Esses pacotes permitiriam que … Continue reading
Posted in Python
7 Comments
Python: Rastreando chamadas de funções
Palavras-chave: debug, depuração, trace, decorators Essa dica veio de um amigo meu (Ulysses) e foi enviada para a lista de discussões PythonBrasil. É muito comum precisar rastrear as chamadas de funções que ocorrem dentro dos programas, para facilitar nossa vida … Continue reading
Posted in Python
Comments Off on Python: Rastreando chamadas de funções
Python: Importando módulos errados
Palavras-chave: erro, debug, módulos Se acontecer de, durante o desenvolvimento, você dar um import em um módulo Python e por alguma razão inexplicável o módulo que você importou não funciona ou funciona como se fosse uma versão antiga verifique o … Continue reading
Python: Declarar a codificação dos fontes (encoding)
Palavras-chave: Python, encoding, iso-8859-1, latin-1, utf-8, unicode, DeprecationWarning Quando você coloca algum caractere acentuado no seu programa, por exemplo “á”, um aviso é mostrado na execução: sys:1: DeprecationWarning: Non-ASCII character ‘\xe1’ in file foo.py on line 3, but no encoding … Continue reading
Posted in Python
6 Comments
Python: Formatar strings com dicionários (template)
Palavras-chave: strings, formatação, template, dicionário Muitos programadores certamente sabem que a linguagem Python nos permite formatar strings usando os caracteres de formatação comuns à linguagem C. O que talvez poucos saibam é que existe uma “extensão” ao padrão C que … Continue reading
Posted in Python
Comments Off on Python: Formatar strings com dicionários (template)
Python: Iterar sob listas com índices
Palavras-chave: for, iteração, índice O for do Python é bastante conveniente para iterar listas, descartando a necessidade de variáveis de índice auxiliares. No entanto as vezes é necessário iterar uma lista e ter o índice de cada elemento além do … Continue reading
Posted in Python
2 Comments
Python: Mover arquivo para outro diretório
Palavras-chave: Python, mover, arquivo, diretório, shutil, link No Python, para mover um arquivo para outro diretório basta usar o módulo shutil: import shutil shutil.move(“este-arquivo”, “/tmp”) Informe o nome do arquivo e em seguida qual o diretório de destino. O arquivo … Continue reading
Posted in Python
8 Comments
Python: HTTP GET e POST com urllib
Palavras-chave: Python, internet, http, urllib, urlopen, urlencode O módulo urllib lhe fornece meios de acessar servidores HTTP por meios de requests GET e POST de maneira direta: Acessando o conteúdo da https://codare.aurelio.net: import urllib f = urllib.urlopen(“https://codare.aurelio.net”) contents = f.read() … Continue reading
Posted in Python
6 Comments
Python: Concatenação eficiente de strings
Palavras-chave: strings, otimização, concatenação Em Python as strings são imutáveis e por essa razão, quando concatenamos duas delas usando o operador “+” um novo objeto do tipo string é criado e os objetos originais perdem as suas referências. Se não … Continue reading
Posted in Python
3 Comments
Python: Escapar caracteres especiais em HTML (entities)
Palavras-chave: HTML, escape, escapar, html_escape, htmlspecialchars, htmlentities Funcões rápidas para escapar e desescapar caracteres especiais HTML (<, & etc) from htmlentitydefs import codepoint2name as cp2nm, entitydefs as nm2cp import re def htmlescape(texto): return “”.join([cp2nm.has_key(ord(x)) and “&%s;”%cp2nm[ord(x)] or x for x … Continue reading
Posted in Python
5 Comments
Python: Código de depuração (debug)
Palavras-chave: debug, depuração, otimização Quando estamos desenvolvendo um programa é muito comum ter que colocar código de depuração nele para facilitar nosso trabalho. Ao mesmo tempo esse tipo de código não deveria ser executado nas mãos de nossos clientes. Alguns … Continue reading
Posted in Python
Comments Off on Python: Código de depuração (debug)