Python FAQ Geral
****************


Informações Gerais
==================


O que é Python?
---------------

O Python é uma linguagem de programação interpretada, interativa e
orientada a objetos. O mesmo incorporou módulos, exceções, tipagem
dinâmica, tipos de dados dinâmicos de alto nível e classes. O Python
fornece ao desenvolvedor um poder notável aliado a uma sintaxe simples
de clara. Possui interfaces para muitas chamadas e bibliotecas do
sistema, bem como para vários sistemas de janelas, e é extensível
através de linguagem como o C ou C ++. Também é utilizado como
linguagem de extensão para aplicativos que precisam de uma interface
programável. Finalmente, o Python é portátil: o mesmo pode ser
executado em várias variantes do Unix, no Mac e no Windows 2000 ou
versões posteriores.

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.


Existem restrições de direitos autorais sobre o uso do Python?
--------------------------------------------------------------

Podemos fazer tudo o que quisermos com os fontes, desde que deixemos
os direitos autorais e exibimos esses direitos em qualquer
documentação sobre o Python que produzirmos. Se honrarmos as regras
dos direitos autorais, não há quaisquer problema em utilizar o Python
em versões comerciais, vende-lo cópia-lo na forma de código fonte ou o
seu binária (modificado ou não modificado), ou para vender produtos
que incorporem o Python de alguma forma. Ainda gostaríamos de saber
sobre todo o uso comercial de Python, é claro.

Veja the PSF license page para encontrar mais explicações e um link
para o texto completo da licença.

O logotipo do Python é marca registrada e, em certos casos, é
necessária permissão para usá-la. Consulte a Política de Uso da Marca
comercial the Trademark Usage Policy  para obter mais informações.


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 a seção Introdução do Guia do Desenvolvedor Python
<https://devguide.python.org/setup/>`__ 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 Python
<https://devguide.python.org/>* _ para 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 mais informações sobre como o Python é desenvolvido, consulte *o
Guia do Desenvolvedor Python <https://devguide.python.org/>* _.


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.


Eu tenho que gostar de "Monty Python's Flying Circus"?
------------------------------------------------------

Não, mas isso ajuda. :)


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__',
   '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
   '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
   '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
   '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
   '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
   '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
   'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
   'reverse', 'sort']
   >>> [d for d in dir(L) if '__' not in d]
   ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

   >>> help(L.append)
   Help on built-in function append:

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

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

Com o intérprete, a documentação nunca está longe do aluno, pois estão
programando.

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.
