2. Utilizando o Interpretador Python
************************************


2.1. Chamando o interpretador
=============================

O interpretador Python geralmente está instalado como
"/usr/local/bin/python3.7" nas máquinas onde está disponível;
colocando "/usr/local/bin" no caminho de busca do seu shell Unix torna
possível iniciá-lo digitando o comando:

   python3.7

para o shell. [1] Como a escolha do diretório onde o interpretador
está é uma opção de instalação, outros locais são possíveis; verifique
com seu guru Python ou administrador do sistema local. (Por exemplo,
"/usr/local/python" é um local alternativo popular.)

On Windows machines where you have installed Python from the Microsoft
Store, the "python3.7" command will be available. If you have the
py.exe launcher installed, you can use the "py" command. See Excursus:
Configurando variáveis de ambiente for other ways to launch Python.

Digitando um caractere fim-de-arquivo ("Control-D" no Unix,
"Control-Z" no Windows) diretamente no prompt força o interpretador a
sair com status de saída zero. Se isso não funcionar, você pode sair
do interpretador digitando o seguinte comando: "quit()".

Os recursos de edição de linha do interpretador incluem edição
interativa, substituição de histórico e complemento de código, em
sistemas que suportam a biblioteca GNU Readline. Talvez a verificação
mais rápida, para ver se a edição de linha de comando é suportada, é
digitando "Control-P" no primeiro prompt oferecido pelo Python. Se for
emitido um bipe, você terá a edição da linha de comando; veja Apêndice
Edição de entrada interativa e substituição de histórico para uma
introdução às combinações. Se nada acontecer, ou se "^P" aparecer na
tela, a edição da linha de comando não está disponível; você só poderá
usar backspace para remover caracteres da linha atual.

O interpretador trabalha de forma semelhante a uma shell de UNIX:
quando chamado com a saída padrão conectada a um console de terminal,
ele lê e executa comandos interativamente; quando chamado com um nome
de arquivo como argumento, ou com redirecionamento da entrada padrão
para ler um arquivo, o interpretador lê e executa o *script* contido
no arquivo.

Uma segunda forma de rodar o interpretador é "python -c command [arg]
...", que executa um ou mais comandos especificados na posição
*comando*, analogamente à opção de shell "-c". Considerando que
comandos Python frequentemente têm espaços em branco (ou outros
caracteres que são especiais para a shell) é aconselhável que o
*comando* esteja dentro de aspas duplas.

Alguns módulos Python são também úteis como scripts. Estes podem ser
chamados usando "python -m module [arg] ...", que executa o arquivo
fonte do *módulo* como se você tivesse digitado seu caminho completo
na linha de comando.

Quando um arquivo de script é utilizado, as vezes é útil executá-lo e
logo em seguida entrar em modo interativo. Isto pode ser feito
acrescentando o argumento "-i" antes do nome do script.

Todas as opções de linha de comando são descritas em Linha de comando
e ambiente.


2.1.1. Passagem de argumentos
-----------------------------

Quando são de conhecimento do interpretador, o nome do script e demais
argumentos da linha de comando da shell são acessíveis ao próprio
script através da variável "argv" do módulo "sys". Pode-se acessar
essa lista executando "import sys". Essa lista tem sempre ao menos um
elemento; quando nenhum script ou argumento for passado para o
interpretador, "sys.argv[0]" será uma string vazia. Quando o nome do
script for "'-'" (significando entrada padrão), o conteúdo de
"sys.argv[0]" será "'-'". Quando for utilizado "-c" *comando*,
"sys.argv[0]" conterá "'-c'". Quando for utilizado "-m" *módulo*,
"sys.argv[0]" conterá o caminho completo do módulo localizado. Opções
especificadas após "-c" *comando* ou "-m" *módulo* não serão
consumidas pelo interpretador mas deixadas em "sys.argv" para serem
tratadas pelo comando ou módulo.


2.1.2. Modo interativo
----------------------

Quando os comandos são lidos a partir do console, diz-se que o
interpretador está em modo interativo. Nesse modo ele solicita um
próximo comando através do *prompt primário*, tipicamente três sinais
de maior (">>>"); para linhas de continuação do comando atual, o
*prompt secundário* padrão é formado por três pontos ("..."). O
interpretador exibe uma mensagem de boas vindas, informando seu número
de versão e um aviso de copyright antes de exibir o primeiro prompt:

   $ python3.7
   Python 3.7 (default, Sep 16 2015, 09:25:04)
   [GCC 4.8.2] on linux
   Type "help", "copyright", "credits" or "license" for more information.
   >>>

Linhas de continuação são necessárias em construções multi-linha. Como
exemplo, dê uma olhada nesse comando "if":

   >>> the_world_is_flat = True
   >>> if the_world_is_flat:
   ...     print("Be careful not to fall off!")
   ...
   Be careful not to fall off!

Para mais informações sobre o modo interativo, veja Modo interativo.


2.2. O interpretador e seu ambiente
===================================


2.2.1. Edição de Código Fonte
-----------------------------

Por padrão, arquivos fonte de Python são tratados com codificação
UTF-8.  Nessa codificação, caracteres de muitos idiomas no mundo podem
ser usados simultaneamente em literais string,  identificadores e
comentários --- embora a biblioteca padrão use apenas caracteres ASCII
para identificadores, uma convenção que qualquer código portável deve
seguir. Para exibir todos esses caracteres corretamente, seu editor
deve reconhecer que o arquivo é UTF-8 e deve usar uma fonte que
suporte todos os caracteres no arquivo.

Para declarar uma codificação diferente da padrão, uma linha de
comentário especial deve ser adicionada como *primeira* linha do
arquivo.  A sintaxe é essa:

   # -*- coding: encoding -*-

onde *encoding* é uma das "codecs" válidas suportada pelo Python.

Por exemplo, para declarar que a codificação Windows-1252 deve ser
usada, a primeira linha do seu arquivo fonte deve ser:

   # -*- coding: cp1252 -*-

Uma exceção para a regra da *primeira linha* é quando o código fonte
inicia com uma UNIX "shebang" line.  Nesse caso, a declaração  de
codificação deve ser adicionada como a segunda linha do arquivo.  Por
exemplo:

   #!/usr/bin/env python3
   # -*- coding: cp1252 -*-

-[ Notas de rodapé ]-

[1] No Unix, o interpretador Python 3.x não é instalado por padrão com
    o executável nomeado "python", então não vai conflitar com um
    executável Python 2.x instalado simultaneamente.
