Python FAQ Geral

Informações Gerais

O que é Python?

Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants, on the Mac, and on PCs under MS-DOS, Windows, Windows NT, and OS/2.

Para saber mais, inicie pelo nosso tutorial O Tutorial Python. Os links do Beginner’s Guide to Python para outros tutoriais introdutórios e recursos da linguagem Python.

O que é a Python Software Foundation?

O Python Software Foundation é uma organização independente e sem fins lucrativos que detém os direitos autorais sobre as versões 2.1 do Python e as mais recentes. A missão do PSF é avançar a tecnologia de código aberto relacionada à linguagem de programação Python e divulgar a utilização do Python. A página inicial do PSF pode ser acessada pelo link a seguir https://www.python.org/psf/.

Doações para o PSF estão isentas de impostos nos EUA. Se utilizares o Python e achares útil, contribua através da página de doação do PSF the PSF donation page.

Em primeiro lugar, por que o Python foi desenvolvido?

Aqui está um resumo muito breve de como que tudo começou, escrito por Guido van Rossum:

Eu tive vasta experiência na implementação de linguagens interpretada no grupo ABC da CWI e, ao trabalhar com esse grupo, aprendi muito sobre o design de linguagens. Este é a origem de muitos recursos do Python, incluindo o uso da indentação para o agrupamento de instruções e a inclusão de tipos de dados de alto nível (embora existam diversos detalhes diferentes em Python).

Eu tinha uma série de queixas sobre a língua ABC, mas também havia gostado de muitos das suas características. Era impossível estender o idioma ABC (ou melhorar a implementação) para remediar minhas queixas - na verdade, a falta de extensibilidade era um dos maiores problemas. Eu tinha alguma experiência com o uso de Modula-2+ e conversei com os designers do Modula-3 e li o relatório do Modula-3. Modula-3 foi a origem da sintaxe e semântica usada nas exceções, e alguns outros recursos do Python.

Eu estava trabalhando no grupo de sistema operacional distribuído da Amoeba na CWI. Precisávamos de uma maneira melhor de administrar o sistema do que escrevendo programas em C ou Bourne Shell Scripts, uma vez que o Amoeba tinha a sua própria interface de chamada do sistema, que não era facilmente acessível a partir do Shell Bourne. Minha experiência com o tratamento de erros em Amoeba me conscientizou da importância das exceções como um recurso das linguagem de programação.

Percebi que uma linguagem de Script com uma sintaxe semelhante a do ABC, mas com acesso às chamadas do sistema Amoeba, preencheria a necessidade. Percebi também que seria uma boa escrever uma linguagem específica do ameba, então, decidi que precisava de uma linguagem realmente extensível.

Durante as férias do Natal de 1989, tive bastante tempo disponível e então decidi tentar a construção de algo. Durante ano seguinte, continuei trabalhando em minhas horas vagas, e o Python foi usado no projeto Amoeba com crescente sucesso, e o feedback dos colegas me fez implementar muita melhoria.

Em fevereiro de 1991, depois de mais de um ano de desenvolvimento, decidi publicar no USENET. O resto está no arquivo Misc/HISTORY.

Para o que que o Python é excelente?

O Python é uma linguagem de programação de propósito geral, de alto nível e que pode ser aplicada em muitos tipos diferentes de problemas.

A linguagem vem com uma larga biblioteca padrão que cobre áreas como processamento de cadeias de caracteres (expressões regulares, Unicode, cálculo de diferença entre arquivos), protocolos da Internet (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, programação CGI), engenharia de software (testes unitários, logging, análise de desempenho, parsing de código Python), e interfaces do sistema operacional (chamadas de sistema, sistemas de arquivos, sockets TCP/IP). Veja a tabela de conteúdo A Biblioteca Padrão do Python para ter uma ideia do que está disponível. Uma grande variedade de extensões de terceiros também está disponível. Consulte o Índice de Pacotes Python para encontrar pacotes que possam interessar a você.

Como funciona o esquema de numeração de versões do Python?

As versões do Python são numeradas na forma A.B.C ou A.B. A é o número da versão principal - só é incrementado quando ocorre mudanças realmente importantes na linguagem. O B é o número da versão menor, incrementado quando ocorre mudanças menores. O C é o micro-nível - é incrementado para cada versão do bugfix. Veja p PEP 6 para obter mais informações sobre as versões do bugfix.

Nem todos as versões são lançamentos de bugfix. Na corrida por uma nova versão principal, uma série de lançamentos de desenvolvimento são feitas, denotadas como alfa, beta ou candidate. As versões Alphas são lançamentos iniciais (early releases) em que as interfaces ainda não estão finalizadas; não é inesperado ver uma mudança de interface entre duas versões alfa. Os Betas são mais estáveis, preservando as interfaces existentes, mas possivelmente adicionando novos módulos, e os candidatos a lançamento são congelados, sem alterações, exceto quando necessário para corrigir erros críticos.

As versões de lançamento Alpha, beta e candidate possuem um sufixo adicional. O sufixo para uma versão alfa é “aN” para algum número pequeno N, o sufixo para uma versão beta é “bN” para algum número pequeno N e o sufixo para uma versão candidata a ser lançamenta é “cN” para algum pequeno número N. Em outras palavras, todas as versões rotuladas como 2.0aN precedem as versões rotuladas como 2.0bN, que precedem as versões rotuladas como 2.0cN e * essas* precederam a 2.0.

Também podemos encontrar números de versão com um sufixo “+”, por exemplo, “2.2+”. Estas são versões não lançadas, construídas diretamente do repositório de desenvolvimento do CPython. Na prática, após uma última versão menor, a versão é incrementada para a próxima versão secundária, que se torna a versão “a0”, por exemplo, “2.4a0”.

Veja também a documentação para sys.version, sys.hexversion, e sys.version_info.

Como faço para obter uma cópia dos fonte do Python?

A última distribuição fonte do Python sempre está disponível no python.org, em https://www.python.org/downloads/. As últimas fontes de desenvolvimento podem ser obtidas em https://github.com/python/cpython/.

A distribuição fonte é um arquivo .tar com .gzip contendo o código-fonte C completo, a documentação formatada com o Sphinx, módulos de biblioteca Python, programas de exemplo e várias peças úteis de software livremente distribuível. A fonte compilará e ficará fora da caixa na maioria das plataformas UNIX.

Consulte o Getting Started section of the Python Developer’s Guide para obter mais informações sobre como obter o código-fonte e compilá-lo.

Como faço para obter a documentação do Python?

A documentação padrão para a versão atualmente estável do Python está disponível em https://docs.python.org/3/. Em PDF, texto simples e versões HTML para download também estão disponíveis em https://docs.python.org/3/download.html.

A documentação é escrita em reStructuredText e processada pela the Sphinx documentation tool. Os fonte do reStructuredText para documentação fazem parte da distribuição fonte do Python.

Eu nunca programei antes. Existe um tutorial básico do Python?

Existem inúmeros tutoriais e livros disponíveis. A documentação padrão inclui O Tutorial Python.

Consulte o Guia do Iniciante the Beginner’s Guide para encontrar informações referewntes a quem está começando agora na programação Python, incluindo uma lista com tutoriais.

Existe um grupo de discussão ou lista de discussão dedicada ao Python?

Existe um grupo de notícias comp.lang.python, e uma lista de discussão, ` python-list <https://mail.python.org/mailman/listinfo/python-list> _. O grupo de discussão e a lista de endereços são entregues - se poderes ler as notícias, não será necessário se inscrever na lista de endereços. :newsgroup:`comp.lang.python possui bastante postagem, recebendo centenas de postagens todos os dias, e os leitores do Usenet geralmente são mais capazes de lidar com esse volume.

Os anúncios de novas versões e eventos de software podem ser encontrados em comp.lang.python.announce, uma lista moderada de baixo tráfego que recebe cerca de cinco postagens por dia. Está disponível como the python-announce mailing list.

Mais informações sobre outras listas de discussão e Newsgroups podem ser encontradas em https://www.python.org/community/lists/.

Como faço para obter uma versão de teste beta do Python?

As versões Alpha e beta estão disponíveis em https://www.python.org/downloads/. Todos os lançamentos são anunciados nos grupos de notícias comp.lang.python e comp.lang.python.announce e na página inicial do Python em https://www.python.org/; um feed RSS de notícias está disponível.

Você também pode acessar a versão de desenvolvimento do Python através do Git. Veja o Guia do desenvolvedor do Python The Python Developer’s Guide para obter detalhes.

Como eu envio um bug report e patches para o Python?

Para reportar um erro ou enviar um patch, use a instalação Roundup em https://bugs.python.org/.

Você deve ter uma conta em Roundup para poder enviar um bug report; Isso nos permite contactá-lo se tivermos mais perguntas a serem feitas. Também permitirá que o Roundup lhe envie atualizações à medida que trabalhamos na correção do bug por você relatado. Se tiveres usado o SourceForge anteriormente para relatar erros do Python, você pode obter sua senha do Roundup através do password reset procedure.

Para obter mais informações sobre como o Python vem sendo desenvolvido, consulte o Guia do desenvolvedor do Python the Python Developer’s Guide.

Existem alguns artigos publicados sobre o Python para que eu possa fazer referência?

Provavelmente será melhor citar o seu livro favorito sobre o Python.

O primeiro artigo sobre Python foi escrito em 1991 e atualmente o mesmo se encontra bastante desatualizado.

Guido van Rossum e Jelke de Boer, “Interactively Testing Remote Servers Using the Python Programming Language”, CWI Quarterly, Volume 4, Edição 4 (dezembro de 1991), Amsterdam, pp. 283–303.q

Existem alguns livros sobre o Python?

Sim, há muitos publicados e muitos outros que estão sendo nesse momento escritos!! Veja o wiki python.org em https://wiki.python.org/moin/PythonBooks para obter uma listagem.

Você também pode pesquisar livrarias online sobre “Python” e filtrar as referências a respeito do Monty Python; ou talvez procure por “Python” e “linguagem”.

Onde está armazenado o site www.python.org?

A infraestrutura do projeto Python está localizada em todo o mundo e é gerenciada pela equipe de infraestrutura do Python. Detalhes aqui <http://infra.psf.io> __.

Por que o nome Python?

Quando o Guido van Rossum começou a implementar o Python, o mesmo também estava lendo os scripts publicados do “Monty Python’s Flying Circus”, uma série de comédia da BBC da década de 1970. Van Rossum pensou que precisava de um nome curto, único e ligeiramente misterioso, então resolveu chamar a sua linguagem de Python.

Python in the real world

Quão estável é o Python?

Muito estável. Novos lançamentos estáveis são divulgados aproximadamente de 6 a 18 meses desde 1991, e isso provavelmente continuará. Atualmente, o ritmo de publicação vem sendo a cada 18 meses das versões principais.

Os desenvolvedores lançam versões “bugfix” de versões mais antigas, então a estabilidade dos lançamentos existentes melhora gradualmente. As liberações de correções de erros, indicadas por um terceiro componente do número da versão (por exemplo, 3.5.3, 3.6.2), são gerenciadas para estabilidade; somente correções para problemas conhecidos são incluídas em uma versão de correções de erros, e é garantido que as interfaces permanecerão as mesmas durante uma série de liberações de correções de erros.

As últimas versões estáveis ​​sempre podem ser encontradas na página de download do Python <https://www.python.org/downloads/> _. Existem duas versões prontas para produção do Python: 2.xe 3.x. A versão recomendada é 3.x, que é suportada pelas bibliotecas mais usadas. Embora 2.x ainda seja amplamente utilizado, `não será mantido após 1 de janeiro de 2020 <https://www.python.org/dev/peps/pep-0373/> _.

Quantas pessoas usam o Python?

Provavelmente existem dezenas de milhares de usuários, embora seja difícil obter uma contagem exata.

O Python está disponível para download gratuito, portanto, não há números de vendas, e o mesmo está disponível em vários diferentes sites e é empacotado em muitas distribuições Linux, portanto, utilizar as estatísticas de downloads não seria a melhor forma para contabilizarmos a base de usuários.

O grupo de notícias comp.lang.python é bastante ativo, mas nem todos os usuários Python postam no grupo ou mesmo o leem regularmente.

Exizte algum projeto significativo feito em Python?

Veja a lista em https://www.python.org/about/success para obter uma listagem de projetos que usam o Python. Consultar os procedimentos para as conferências passadas do Python, past Python conferences revelará as contribuições de várias empresas e de diferentes organizações.

Os projetos Python de alto perfil incluem o gerenciador da lista e-mail Mailman the Mailman mailing list manager e o servidor de aplicativos Zope the Zope application server. Várias distribuições Linux, mais notavelmente o Red Hat, escreveram parte ou a totalidade do seus instaladores e software de administração do sistema em Python. Empresas que usam Python internamente incluem Google, Yahoo e Lucasfilm Ltd.

Quais são os novos desenvolvimentos esperados para o Python no futuro?

Consulte https://www.python.org/dev/peps/ para ver a lista de propostas de aprimoramento do python (PEPs). As PEPs são documentos de design que descrevem novos recurso que foram sugerido para o Python, fornecendo uma especificação técnica concisa e a sua lógica. Procure uma PEP intitulado de “Python X.Y Release Schedule”, onde X.Y é uma versão que ainda não foi lançada publicamente.

Novos desenvolvimentos são discutido na lista de discussão do python-dev the python-dev mailing list.

É razoável propor mudanças incompatíveis com o Python?

Normalmente não. Já existem milhões de linhas de código Python em todo o mundo, de modo que qualquer alteração na linguagem que invalide mais de uma fração muito pequena dos programas existentes deverá ser desaprovada. Mesmo que possamos fornecer um programa de conversão, ainda haverá o problema de atualizar toda a documentação; muitos livros foram escritos sobre o Python, e não queremos invalidá-los todos de uma vez só.

Fornecer um caminho de atualização gradual será necessário se um recurso precisar ser alterado. A PEP 5 descreve o procedimento e em seguida introduz alterações incompatíveis com versões anteriores ao mesmo tempo em que minimiza a interrupção dos usuários.

O Python é uma boa linguagem para quem está começando na programação agora?

Sim.

Ainda é bastante comum que os alunos iniciem com uma linguagem procedura e estaticamente tipada como Pascal e o C ou um subconjunto do C++ ou do Java. Os alunos podem ser melhor atendidos ao aprender Python como sua primeira língua. O Python possui uma sintaxe muito simples e consistente e uma grande quantidade de bibliotecas padrão e, o mais importante, o uso do Python em um curso de programação para iniciantes permite aos alunos se concentrarem em habilidades de programação importantes, como a decomposição do problema e o design do tipo de dados. Com o Python, os alunos podem ser introduzidos rapidamente em conceitos básicos, como loops e procedimentos. Provavelmente os mesmos até poderão trabalhar com objetos definidos por ele mesmos logo em seu primeiro curso.

Para um aluno que nunca programou antes, usar um idioma estaticamente tipado parece não que não é natural. O mesmo apresenta uma complexidade adicional que o aluno deverá dominar e geralmente retarda o ritmo do curso. Os alunos estão tentando aprender a pensar como um computador, decompor problemas, projetar interfaces consistentes e encapsular dados. Embora aprender a usar uma linguagem tipicamente estatica seja importante a longo prazo, não é necessariamente o melhor tópico a ser abordado no primeiro momento de um curso de programação.

Muitos outros aspectos do Python fazem do mesmo uma excelente linguagem para quem está aprendendo a programar. Como o Java, o Python possui uma biblioteca padrão grande para que o estudantes possam receber projetos de programação muito cedo no curso e que possam fazer trabalhos úteis. As atribuições não estão restritas à calculadora padrão de quatro funções e verificam os programas de balanceamento. Ao usar a biblioteca padrão, os alunos podem ter a satisfação de trabalhar em aplicações reais à medida que aprendem os fundamentos da programação. O uso da biblioteca padrão também ensina os alunos sobre a reutilização de código. Os módulos de terceiros, como o PyGame, também são úteis para ampliar o alcance dos estudantes.

O intérprete interativo do Python permite aos alunos testar recursos da linguagem enquanto estão programando. Os mesmos podem manter uma janela com o intérprete executado enquanto digitam a fonte do seu programa numa outra janela. Se eles não conseguirem se lembrar dos métodos de uma lista, eles podem fazer algo assim:

>>> L = []
>>> dir(L) 
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__delslice__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__getslice__', '__gt__',
'__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__',
'__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__reversed__', '__rmul__',
'__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__',
'__subclasshook__', 'append', 'count', 'extend', 'index', 'insert',
'pop', 'remove', 'reverse', 'sort']
>>> help(L.append)
Help on built-in function append:

append(...)
    L.append(object) -- append object to end

>>> L.append(1)
>>> L
[1]

With the interpreter, documentation is never far from the student as he’s programming.

Há também boas IDEs para o Python. O IDLE é uma IDE multiplataforma para o Python e que foi escrito em Python usando o Tkinter. O PythonWin é uma IDE específica para o Windows. Os usuários do Emacs estarão felizes em saber que existe um ótimo modo Python para Emacs. Todos esses ambientes de programação fornecem destaque de sintaxe, recuo automático e acesso ao intérprete interativo durante o tempo de desenvolvimento. Consulte o wiki do Python para obter uma lista completa dos ambientes de desenvolvimento para o Python.

Se você quiseres discutir o uso do Python na educação, poderás estar interessado em se juntar à lista de discussão edu-sig the edu-sig mailing list.

Upgrading Python

What is this bsddb185 module my application keeps complaining about?

Starting with Python2.3, the distribution includes the PyBSDDB package <http://pybsddb.sf.net/> as a replacement for the old bsddb module. It includes functions which provide backward compatibility at the API level, but requires a newer version of the underlying Berkeley DB library. Files created with the older bsddb module can’t be opened directly using the new module.

Using your old version of Python and a pair of scripts which are part of Python 2.3 (db2pickle.py and pickle2db.py, in the Tools/scripts directory) you can convert your old database files to the new format. Using your old Python version, run the db2pickle.py script to convert it to a pickle, e.g.:

python2.2 <pathto>/db2pickley.py database.db database.pck

Rename your database file:

mv database.db olddatabase.db

Now convert the pickle file to a new format database:

python <pathto>/pickle2db.py database.db database.pck

The precise commands you use will vary depending on the particulars of your installation. For full details about operation of these two scripts check the doc string at the start of each one.