O Guia do Mochileiro Python

Page 1

Kenneth Reitz Tanya Schlusser

Novatec


Authorized Portuguese translation of the English edition of The Hitchhiker’s Guide to Python ISBN 9781491933176 © 2016 Kenneth Reitz, Tanya Schlusser. This translation is published and sold by permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra The Hitchhiker’s Guide to Python ISBN 9781491933176 © 2016 Kenneth Reitz, Tanya Schlusser. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra. © Novatec Editora Ltda. 2017. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Tradução: Aldir José Coelho Corrêa da Silva Revisão gramatical: Priscila A. Yoshimatsu Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-541-7 Histórico de impressões: Fevereiro/2017

Primeira edição

Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 Email: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec


capítulo 1

Selecionando um interpretador

Python 2 versus Python 3 Há uma dúvida que sempre está presente na seleção de um interpretador Python: “Devo escolher Python 2 ou Python 3?”. A resposta não é tão óbvia quanto parece (embora a versão 3 esteja se tornando cada vez mais necessária). Vejamos o estado das coisas: • Python 2.7 foi o padrão por um longo time. • Python 3 introduziu alterações importantes na linguagem, com as quais alguns desenvolvedores não estão satisfeitos.1 • Python 2.7 receberá atualizações de segurança necessárias até 2020 (https://www.python.org/dev/peps/pep-0373/). • Python 3 está evoluindo continuamente, como ocorreu com Python 2 no passado. Espero que tenha entendido por que essa não é uma decisão fácil.

1 Se você não faz muitos trabalhos de programação de rede em baixo nível, as alterações serão pouco perceptíveis, a não ser pela instrução print que agora é uma função. Caso contrário, “não estar satisfeito” é apenas um eufemismo polido – desenvolvedores responsáveis por grandes e populares bibliotecas da web, de soquetes ou de rede que lidam com strings unicode e de bytes tiveram (ou ainda têm) grandes alterações a fazer. Detalhes sobre a mudança, retirados diretamente da primeira introdução de Python 3 ao mundo, começam com: “Tudo que você achou que conhecia sobre dados binários e o padrão Unicode mudou.” (https://docs.python.org/3/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit).

17


18

O Guia do Mochileiro Python

Recomendações Em nossa opinião, um mochileiro realmente esperto2 usaria Python 3. Porém, se você só puder usar Python 2, pelo menos estará usando Python. Estas são nossas recomendações: Use Python 3 se… • Você adora Python 3. • Não sabe qual usar. • Aprecia mudanças. Use Python 2 se… • Adora Python 2 e fica triste em saber que no futuro só haverá Python 3. • Agir diferentemente afete os requisitos de estabilidade de seu software.3 • Algum software do qual você dependa precise dele.

Então… ficamos com o 3? Se estiver selecionando um interpretador Python para usar, e não for inflexível, use a versão 3.x mais recente – toda versão traz módulos da biblioteca-padrão novos e aperfeiçoados, recursos de segurança e correções de bugs. Progresso é progresso. Logo, só use Python 2 se tiver uma forte razão para fazê-lo, como no caso de haver uma biblioteca exclusiva da versão 2 que não tenha uma alternativa adequada imediata em Python 3, se for necessária uma implementação específica (consulte “Implementações”, na página 19) ou se (como alguns de nós) gostar muito da versão 2 e ela o inspirar. Examine Can I Use Python 3? (https://caniusepython3.com/) para saber se algum projeto Python do qual você dependa impedirá a adoção de Python 3. Como leitura adicional, examine Python2orPython3 (https://wiki.python.org/moin/ Python2orPython3), que apresenta algumas das razões por trás da ruptura incompatível com versões anteriores ocorrida na especificação da linguagem e links para especificações das diferenças. 2 Alguém realmente muito incrível. Ou seja, que saiba onde está sua toalha. (Essas noções foram tiradas da obra O Guia do Mochileiro das Galáxias.) 3 Este link conduz a uma lista de alterações de alto nível da Biblioteca-Padrão Python: http://python3porting.com/stdlib.html.


Capítulo 1 ■ Selecionando um interpretador

19

Se você for um iniciante, terá de se preocupar com coisas muito mais importantes que a compatibilidade entre todas as versões de Python. Produza algo funcional para o sistema que possui e supere esse obstáculo depois.

Implementações Quando as pessoas usam o termo Python, com frequência se referem não só à linguagem, mas também à implementação CPython. Na verdade, Python é a especificação de uma linguagem que pode ser implementada de várias maneiras. As diferentes implementações podem existir por compatibilidade com outras bibliotecas, ou talvez para o ganho de um pouco mais de velocidade. Bibliotecas Python puras devem funcionar independentemente de nossa implementação da linguagem Python, mas as construídas em C (como a NumPy) não funcionarão. Esta seção fornece um breve resumo das implementações mais populares. Este guia presume que você esteja trabalhando com a implementação CPython padrão de Python 3, mas adicionaremos notas quando relevante para Python 2.

CPython CPython é a implementação de referência4 da linguagem Python, escrita em C.

Ela compila código Python em bytecode intermediário, que é então interpretado por uma máquina virtual. CPython fornece o nível mais alto de compatibilidade com pacotes Python e módulos de extensão C.5 Se estiver escrevendo código Python open source e quiser alcançar o público mais amplo possível, use CPython. Para usar pacotes que dependam de extensões C para funcionar, CPython é sua única opção de implementação. Todas as versões da linguagem Python são implementadas em C porque CPython é a implementação de referência.

4 A implementação de referência reflete de maneira precisa a definição da linguagem. Seu comportamento é o que todas as outras implementações devem apresentar. 5 Módulos de extensão C são escritos em C para serem usados em Python.


20

O Guia do Mochileiro Python

Stackless O Stackless Python é CPython comum (logo, deve funcionar com todas as bibliotecas que o CPython usa), mas com um patch que desacopla o interpretador Python da pilha de chamadas, tornando possível alterar a ordem de execução do código. O Stackless introduz o conceito de tasklets, que podem encapsular funções e transformá-las em “microthreads”, que por sua vez podem ser serializadas em disco para execução futura e agendadas, por padrão em execução round-robin. A biblioteca greenlet implementa essa mesma funcionalidade de mudança de pilha para usuários de CPython. Grande parte da funcionalidade também foi implementada no PyPy.

PyPy PyPy é um interpretador implementado em um subconjunto restrito da linguagem Python tipificado estaticamente chamado RPython, tornando possível certos tipos de otimização. O interpretador contém um compilador just-in-time e dá suporte a vários backends, como bytecode em C, em Common Intermediate Language (CIL; http://www.ecma-international.org/publications/standards/Ecma-335.htm) e de Java Virtual Machine (JVM).

Ele visa o fornecimento de compatibilidade máxima com a implementação de referência CPython com melhoria do desempenho. Se você deseja melhorar o desempenho de seu código Python, vale a pena testá-lo. Em um conjunto de benchmarks, atualmente ele é cinco vezes mais rápido que o CPython (http://speed.pypy.org/). O PyPy dá suporte ao Python 2.7, e o PyPy3 se destina ao Python 3. As duas versões estão disponíveis na página de download do PyPy.

Jython Jython é uma implementação de interpretador Python que compila código Python

em bytecode Java, que é então executado pela JVM. Além disso, ele pode importar e usar qualquer classe Java como um módulo Python. Se você precisar interagir com uma base de código Java existente ou tiver outras razões para escrever código Python para a JVM, ele é a melhor opção. Atualmente o suporte do Jython vai até o Python 2.7 (https://hg.python.org/jython/ file/412a8f9445f7/NEWS).


Capítulo 1 ■ Selecionando um interpretador

21

IronPython IronPython é uma implementação de Python para o .NET framework. Ele pode

usar bibliotecas tanto de Python quanto do .NET framework, e também pode expor código Python a outras linguagens do .NET framework. O Python Tools for Visual Studio (http://ironpython.net/tools/) integra o IronPython diretamente ao ambiente de desenvolvimento do Visual Studio, tornando-o uma opção ideal para desenvolvedores do Windows. O IronPython dá suporte ao Python 2.7 (http://ironpython.codeplex.com/releases/ view/81726).

PythonNet Python for .NET é um pacote que fornece integração quase perfeita de uma insta-

lação Python feita nativamente com o .NET Common Language Runtime (CLR). Essa é a abordagem inversa à adotada pelo IronPython, o que significa que o PythonNet e o IronPython se complementam em vez de competir um com o outro. Combinado com o Mono (http://www.mono-project.com/), o PythonNet permite que instalações Python em sistemas operacionais não Windows, como o OS X e o Linux, operem dentro do .NET framework. Ele pode ser executado junto com o IronPython sem causar conflito. O PythonNet suporta do Python 2.3 ao Python 2.7; as instruções de instalação estão em sua página readme (http://pythonnet.github.io/readme.html).

Skulpt Skulpt é uma implementação JavaScript de Python. Ele não contém toda a

biblioteca-padrão do CPython; a biblioteca tem os módulos math, random, turtle, image, unittest e partes de time, urllib, DOM e re. Foi criado para fins de aprendizado. Também há uma maneira de adicionarmos nossos próprios módulos (http://www.skulpt.org/static/developer.html#adding-a-module). Exemplos conhecidos de seu uso podem ser vistos no Interactive Python e no CodeSkulptor. O Skulpt dá suporte a quase tudo que existe nas versões Python 2.7 e Python 3.3. Consulte sua página no GitHub para ver detalhes (https://github.com/skulpt/skulpt).


22

O Guia do Mochileiro Python

MicroPython MicroPython é uma implementação de Python 3 otimizada para execução em um

microcontrolador; ele dá suporte a processadores ARM de 32 bits com o conjunto de instruções Thumb v2, como a série Cortex-M usada em microcontroladores de baixo custo. Inclui os módulos (http://docs.micropython.org/en/latest/pyboard/library/ index.html) da Biblioteca-Padrão Python, além de algumas bibliotecas específicas próprias para detalhes de placa, informações de memória, acesso à rede, e uma versão modificada do ctypes otimizada para um tamanho menor. Não é igual ao Raspberry Pi, que tem um sistema operacional Debian ou baseado em C, com Python instalado. Na verdade, a pyboard (https://store.micropython.org/#/store) usa o MicroPython como seu sistema operacional. Deste ponto em diante, usaremos o CPython em um sistema de tipo Unix, no OS X ou em um sistema Windows.

Passemos à instalação – pegue sua toalha!6

6 N.T.: Segundo O Guia do Mochileiro das Galáxias, a toalha é um dos objetos mais úteis para um mochileiro interestelar.


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.