Tag: Python


  • A partir do Python 2.5, ao estender dicionários, você pode dar a suas classes um método __missing_, que será executado toda vez que você tentar acessar um índice inexistente. Veja: class Counter(dict): def __missing__(self, key): self[key]=0 return self[key] Veja funcionando: >>> votos=[‘john’,’paul’,’john’,’john’,’ringo’, … ‘george’,’paul’,’ringo’,’ringo’,’john’, … ‘paul’,’john’,’george’,’paul’,’paul’, … ‘john’,’paul’,’john’,’ringo’,’paul’] >>> c=Counter() >>> for v in votos:…

  • Dica: ao iniciar o desenvolvimento com Python em uma máquina nova, procure pelo arquivo sitecustomize.py e acrescente: import sys sys.setdefaultencoding(‘utf-8’) O arquivo sitecustomize.py é automaticamente executado toda vez que você executa o Python (sim, você pode fazer o que quiser nele…) Ele fica em lugares diferentes dependendo da plataforma e da sua instalação do Python.…

  • Dica de Python: iPython

    A maioria dos programadores Python gasta bastante tempo no shell interativo. É onde fazemos debugging e testamos novos módulos. É também nossa calculadora (piada interna, quem lê, entenda.) Muitos programadores não conhecem o iPython, uma versão “vitaminada” do shell interativo. No site há versões para download para Windows e em formato de Python-EGG. Para instalá-lo…

  • O Mike me convidou, então lá vai: 1. Ubuntu O sistema operacional que simplesmente funciona. Meu notebook tem Ubuntu, o da minha mulher e os dos meus filhos também. Todos tem o Windows OEM em dual-boot. Nem me lembro quando foi a última vez que vi alguém bootar o Windows lá em casa. Aqui na…

  • XML não é a resposta 2: parsing

    Em meu último post sobre esse assunto, expliquei porque prefiro, na maioria dos casos, usar um formato de descrição de dados como JSON ao invés de XML. Infelizmente, parece que nem todo mundo concorda comigo, e há uma porção de dados úteis disponíveis apenas em XML. O que não é um problema, certo? Do que…

  • XML não é a resposta

    Não me entenda mal, XML é uma idéia interessantíssima, pela qual sou apaixonado. Tenho dado aula de XML, escrito HTML como XML válido, publicado e consumido dados em XML, acompanhado as iniciativas de Open Data e RDF no W3C. O problema é que, enquanto alguns mercados subutilizam XML, tornando o intercâmbio de dados muito complexo,…

  • Dica de Python: glob

    Um módulo Python pequeno, com uma única função muito simples, mas que você precisa conhecer é o glob. O que ele faz é obter uma listagem de diretório: import glob files=glob.glob(‘*’) O que equivale a: import os files=os.listdir(‘.’) Porém o glob é muito poderoso. Podemos fazer: glob.glob(‘*.mad’) Ou: glob.glob(‘../pasta/*’) Fica a dica.

  • Parallel Python

    Embora seu computador possa ter dois, quatro, oito ou até dezesseis núcleos de processamento, o Python só usa um deles de cada vez (mesmo trabalhando com threads). Parallel Python resolve o problema. Um exemplo simples, para você entender como funciona: ppserver = pp.Server(ppservers=()) job1 = ppserver.submit(funcao_demorada, (), (), ()) job2 = ppserver.submit(funcao_demorada, (), (), ())…

  • Código simples, mas que pode ser útil para alguém não ter que escrevê-lo de novo (arquivo runcached.py): import os,time cachepath=’cache’ timeout=360   def runcached(cmd):   filename=os.path.join(cachepath,str(hash(cmd)))   if os.path.isfile(filename):     if time.time()-os.path.getmtime(filename)<timeout:       return open(filename).read()   t=os.popen(cmd).read()   open(filename,’w’).write(t)   return t A função runcached roda comandos do sistema operacional, e faz…

  • Não a versão do repositório, mas a mais nova. Só a sequência de comandos, que eu estou com pressa agora: sudo apt-get install build-essential erlang libicu38 libicu-dev libmozjs-dev automake autoconf libtool help2man libcurl-ocaml-dev subversion python-setuptools mkdir ~/src cd ~/src svn co http://svn.apache.org/repos/asf/couchdb/trunk couchdb cd couchdb ./bootstrap && ./configure && make && sudo make install sudo…

  • Fuja da complexidade

    Abri o OpenOffice Writer, mandei gravar uma macro, escrevi “teste”, selecionei e pintei de vermelho. Olha o código gerado: sub Main rem ———————————————————————- rem define variables dim document as object dim dispatcher as object rem ———————————————————————- rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService(“com.sun.star.frame.DispatchHelper”) rem ———————————————————————- dim args1(0) as new com.sun.star.beans.PropertyValue…

  • Meu amigo Vicente Marçal me escreveu: Bem, sei que és professor de Python, além de amante da linguagem e, por isso, acabei fazendo pesquisas sobre ela e estou estudando por conta, mais por hobby do que por qualquer outra coisa. Então, num tempinho livre que vc tiver, avalie esse meu pequeno script o qual disponibilizei…

  • Todas as tarefas relacionadas a contrução, teste e publicação de um desenvolvimento de software devem ser automatizadas o máximo possível. Escrever software é interar. Você escreve e testa, escreve e testa, escreve e testa dezenas, às vezes centenas de vezes por dia. As tarefas relacionadas a testar o software, de maneira especial, merecem a automatização…

  • Meu amigo DGmike publicou: Retornando o último número (script PHP) Como eu acho interessante comparar soluções em linguagens diferentes, resolvi escrever o mesmo script em Python. Veja como ficou: import re def ultimoNumero(string):     return re.findall(r”\d+”,string)[-1] Gostou?

  • O novo Ubuntu 7.10 está maravilhoso. Até o 7.04 eu usava um hack para fazer funcionar minha placa de rede, agora ela funciona sem truques. O compiz já instalado funcionou sozinho, bem direitinho. O resto tudo também funcionou sem dor. Menos o PSE. Por algum motivo estranho, a versão do mod_python (3.3.1) desse novo Ubuntu…

  • Tradutor Português-Portunhol

    Falta uma semana para lo dia internacional de hablarse portuñol. Fica aqui minha contribuição ao ócio e falta do que fazer, fruto de uma tarde de feriado entediante: tradutor automático de sites português-portunhol. Você pode, por exemplo, ver este site traduzido para o portuñol. Tomara que você ache tão divertido de usar quanto eu achei…

  • Ao utilizar expressões regulares em Python, por padrão, seu texto é interpretado como uma seqüência de caracteres ASCII comum. Assim, caracteres acentuados são considerados sinais gráficos especiais, e não são capturados como letras. Veja este exemplo: >>> import re >>> print re.sub(r”\b”,”|”,”era uma criança”) |era| |uma| |crian|ç|a| Como você pode ver, o ce-cedilha não é…

  • Um amigo meu está fazendo faculdade, e começando a aprender a programar (com Java.) Ele me mostrou semana passada um exercício que o professor passou: Solicitar que o usuário informe um número inteiro que será usado como limite superior do contador. O programa deverá exibir todos os números pares existentes entre 1 e o limite…

  • Python X Java X Smalltalk

    Achei muito interessante este artigo comparando a sintaxe de Smalltalk com Java. Implementei os mesmos exemplos em Python, para que você possa comparar a sintaxe: Problema: cálculo de fatorial def factorialRecursive(n):   if n<0:return 0   if n==0:return 1   return n*factorialRecursive(n-1) Ou assim: def factorialNonRecursive(n):   if n<0:return 0   return reduce(lambda a,b:a*b,[1]+range(1,n+1)) A…

  • Um corretor ortográfico de apenas 20 linhas, em Python: How to Write a Spelling Corrector Solução elegante, mostra também o quanto a linguagem é elegante.