Codificação
Código do Python deve sempre utilizar codificação ASCII ou Latin-1 (ISO-8859-1). Para Python 3.0 e mais novos, UTF-8 é preferível ao Latin-1, consulte a
PEP 3120.
Arquivos usando ASCII (ou UTF-8, para Python 3) não devem ter um encoding cookie. Latin-1 (ou UTF-8) deve ser utilizado apenas quando um comentário ou docstring precisa mencionar um nome de autor que requer Latin-1, caso contrário, é preferível usar escapes \x, \u ou \U como forma de incluir dados não-ASCII em strings.
Para Python 3.0 e além, a política a seguir deve ser usada na biblioteca padrão (ver
PEP 3131): Toda a biblioteca padrão deve usar somente identificadores ASCII, e deve usar palavras em Inglês, sempre que possível (em muitos casos, abreviaturas e termos técnicos são usados que não são em Inglês). Além disso, strings e comentários devem ser em ASCII. As únicas exceções são:
- casos de teste testando os recursos não-ASCII;
- os nomes dos autores. Autores cujos nomes não estão baseadas na alfabeto latino deve fornecer uma transliteração latina de
seus nomes.
Projetos de código aberto com uma audiência global são incentivados a adotar uma política similar.
Importações
Importações devem estar em linhas separadas:
- Sim:
import os
import sys
- Não: import os, sys
- Mas é possível usar: from subprocess import Popen, PIPE
Importações ficam sempre no começo do arquivo, após os comentários e a docstring de módulo, e antes da declaração das constantes e globais.
Importações devem estar na seguinte ordem:
- da biblioteca padrão
- de terceiros
- locais, da aplicação
Deve ser colocada uma linha entre cada grupo de importações.
Coloque qualquer especificação relevante para __all__ depois das importações.
Importações relativas para importações intra-pacote são altamente desencorajadas. Sempre use o caminho absoluto do pacote em todas as importações. Mesmo agora que o
PEP 328 está totalmente implementado em Python 2.5, seu estilo de importações em relação explícita é ativamente desencorajado: importações absolutas são mais portáteis e, geralmente, mais legíveis.
Quando importar uma classe de um módulo que contenha classes, normalmente não é errado usar isso:
from myclass import MyClass
from foo.bar.yourclass import YourClass
Se houverem problemas com nome, use o nome inteiro do módulo:
import myclass
import foo.bar.yourclass
E use "myclass.MyClass" e "foo.bar.yourclass.YourClass".