14. Edição de entrada interativa e substituição de histórico¶
Algumas versões do interpretador Python suportam a edição da linha de entrada atual e a substituição da história, semelhante às habilidade encontradas no shell Korn e no shell GNU Bash. Isso é implementado usando a biblioteca GNU Readline, que oferece suporte a vários estilos de edição. Esta biblioteca possui sua própria documentação, que não vamos duplicar aqui.
14.1. Tab Completion e Histórico de Edição¶
A conclusão dos nomes de variáveis e módulos é :ref: ativado <rlcompleter-config>automaticamente na inicialização do interpretador para que a chave :kbd: Tab` invoca a função de conclusão; Ele analisa os nomes das declarações Python, as variáveis locais atuais e os nomes dos módulos disponíveis. Para expressões pontilhadas como `` string.a``, ele avaliará a expressão até o `` ‘.’` final e então sugerirá conclusões dos atributos do objeto resultante. Observe que isso pode executar o código definido pelo aplicativo se um objeto com um método: meth: __getattr__ faz parte da expressão. A configuração padrão também guarda seu histórico em um arquivo chamado: file: .python_history no seu diretório de usuário. O histórico estará disponível novamente durante a próxima sessão de interpretação interativa.
14.2. Alternativas ao interpretador interativo¶
Esta facilidade é um enorme passo em frente em comparação com as versões anteriores do intérpretador; No entanto, alguns desejos são deixados: seria bom se a indentação adequada fosse sugerida nas linhas de continuação (o analisador sabe se é necessário um token de recuo). O mecanismo de conclusão pode usar a tabela de símbolos do intérprete. Um comando para verificar (ou mesmo sugerir) parênteses, citações, etc., também seria útil.
Um intérprete interativo aprimorado e alternativo que existe há algum tempo é o IPython, que apresenta a conclusão da guia, a exploração de objetos e o gerenciamento de histórico avançado. Também pode ser completamente personalizado e incorporado em outras aplicações. Outro ambiente interativo aprimorado similar é bpython.