Author Archives: Osvaldo Santana

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

Posted in Python, Windows | Comments Off on Python: Desligando o prompt de comandos no Windows

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

Posted in Python | 1 Comment

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

Posted in Python | 1 Comment

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

Posted in Python | 1 Comment

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: 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

Posted in Python | 1 Comment

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