Buscar

pep 8 Python

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

GuiaDeEstilo
PEP 8 - Guia de Estilo Para Python
Este artigo é uma tradução livre da PEP 8 - Style Guide for Python Code, de autoria de 
GuidoVanRossum (<guido at python.org>, referenciado também como GvR) e Barry Warsaw 
(<barry at python.org>), disponível em http://www.python.org/peps/pep-0008.html. 
Introdução
Este documento oferece convenções para o código Python compreendido pela biblioteca padrão que
acompanha a distribuição. Há outro documento semelhante 1 que trata do estilo para o código em C 
usado na implementação do interpretador e nas extensões que compõe a biblioteca padrão. 
O conteúdo deste documento é uma adaptação do artigo original Python Style Guide, de 
GuidoVanRossum, com alguns acréscimos retirados do guia de estilo de Barry Warsaw. Onde houve 
conflitos, as regras de GvR foram mantidas. 
Uma Consistência Tosca é o Bicho-Papão das Pequenas 
Mentes
O propósito de um guia de estilo é manter a consistência. Consistência em relação a esse guia é 
importante. Consistência em relação a outros detalhes de um projeto é mais importante. 
Consistência em relação a um módulo ou função é ainda mais importante. 
Mais importante ainda: saiba quando ser inconsistente - algumas vezes, as regras deste guia 
simplesmente não se aplicam. Em caso de dúvida, use seu melhor julgamento. veja outros exemplos
e decida o que fica melhor. E não hesite em perguntar! 
Duas boas razões para quebrar uma regra: 
• Quando a adoção de uma regra irá tornar o código menos legível, mesmo para alguém 
acostumado com essas regras. 
• Quando deseja-se ser consistente com outro código que acompanhe aquele em 
desenvolvimento que também viola as regras - apesar dessa ser uma boa oportunidade para 
consertar a bagunça de alguém. 
Formatação do Código
• Indentação 
• Use o padrão usado pelo "Python-mode" do Emacs: 4 espaços por nível de 
indentação. Para código realmente antigo que você não quer bagunçar, você pode 
continuar a usar 8 espaços. O Python-mode automaticamente detecta o nível de 
indentação predominante em um arquivo e segue este padrão. 
• Tabulações ou espaços 
http://www.python.org.br/wiki/GuiaDeEstilo?action=fullsearch&context=180&value=linkto%3A%22GuiaDeEstilo%22
http://www.python.org.br/wiki/GuidoVanRossum
http://www.python.org.br/wiki/GuiaDeEstilo#fnref-e635b63348b505e826ab3c2ebebeccfb5741fa53
http://www.python.org/peps/pep-0008.html
http://www.python.org.br/wiki/GuidoVanRossum
• Nunca misture tabulações e espaços. A forma mais popular de indentar código em 
Python é somente com espaços. A segunda forma mais popular é somente com 
tabulações. Código com uma mistura dos dois deve ser convertido para usar somente 
espaços. (No Emacs, selecione o buffer inteiro e digite ESC-x untabify). Passando a 
opção -t para o interpretador Python, faz com que ele emita avisos sobre código que 
misture ilegalmente tabulações e espaços. Com -tt esses avisos se tornam erros. Essas
opções são altamente recomendadas! Para projetos novos, recomenda-se usar 
somente espaços. Muitos editores têm opções para tornar isso mais fácil. 
• Comprimento máximo de linhas 
• Ainda há por aí muitos monitores limitados a linhas de 80 colunas (além disso, 
limitando as janelas a 80 caracteres, permite ter várias janelas abertas, lado a lado). 
As quebras de linha padrão nesses monitores é horrível, portante, limite todas as 
linhas a um máximo de 79 caracteres. (o Emacs quebra as linhas que têm exatamente 
80 caracteres). Para longos blocos de texto (docstrings ou comentários), limitar o 
comprimento a 72 colunas é recomendado. 
A melhor maneira de continuar linhas longas é usando a continuação implícita, entre 
parênteses, colchetes e chaves. Se necessário, você pode adicionar um par extra de 
parênteses em volta de uma expressão, mas, às vezes, uma barra invertida fica 
melhor. Tome o cuidado de indentar a linha adequadamente. O Python-mode do 
Emacs faz isso automaticamente. Exemplo: 
Esconder número das linhas 
 1 class Rectangle(Blob):
 2 
 3 def __init__(self, width, height,
 4 color='black', emphasis=None, highlight=0):
 5 if width == 0 and height == 0 and \
 6 color == 'red' and emphasis == 'strong' or \
 7 highlight > 100:
 8 raise ValueError, "sorry, you lose"
 9 if width == 0 and height == 0 and (color == 'red' or
 10 emphasis is None):
 11 raise ValueError, "I don't think so"
 12 Blob.__init__(self, width, height,
 13 color, emphasis, highlight)
• Linhas em branco 
• Separe funções e definições de classe com duas linhas em branco. Métodos dentro de
uma classe devem ser separados com uma única linha em branco. Linhas extras 
podem ser usadas (esporadicamente) para separar grupos de funções relacionadas e 
podem ser omitidas entre grupos relacionados de linhas, como por exemplo, métodos
que sejam sobrescritas em subclasses. Quando linhas em branco são usadas para 
separar métodos, deve haver também uma linha em branco entre a linha 'class' e o 
primeiro método da classe. Use linhas em branco para separar blocos lógicos dentro 
de métodos e funções. Python aceita o caractere control-L (^L) como espaço em 
branco; o Emacs (e algumas ferramentas de impressão) tratam esses caracteres como 
quebra de página, então você pode usá-los para separar páginas de seções 
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_13
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_12
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_11
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_10
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_9
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_8
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_7
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_6
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_5
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_4
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_3
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0394835f633c4c4f49e1b6e0bfc0f959dce1a1ac_1
http://www.python.org.br/wiki/GuiaDeEstilo#
relacionadas no seu arquivo. 
• Import 
• Imports devem sempre ser feitos em linhas separadas, por exemplo: 
incorreto: 
Esconder número das linhas 
 1 import sys, os
correto: 
Esconder número das linhas 
 1 import sys
 2 import os
Mas não há problema algum em usar: 
Esconder número das linhas 
 1 from types import StringType, ListType
• Imports devem ser sempre colocados no topo do arquivo, logo depois de quaisquer 
comentários ou docstrings, e antes de constantes ou globais. Eles devem ser agrupados 
seguindo a ordem: 
• módulos da biblioteca padrão 
• módulos grandes relacionados entre si (por exemplo, todos os módulos de e-mail 
usados pela aplicação) 
• módulos específicos da aplicação 
Você deve colocar uma linha em branco separando cada grupo de módulos. 
• Quando importar uma classe de um módulo de mesmo nome, não há problemas em usar: 
Esconder número das linhas 
 1 from MyClass import MyClass
 2 from foo.bar.YourClass import YourClass
• No entanto, se isso causar conflitos com nomes, use: 
Esconder número das linhas 
 1 import MyClass
 2 import foo.bar.YourClass
• e depois "MyClass.MyClass" e "foo.bar.YourClass.YourClass". 
• Espaços em expressões e instruções 
• Guido odeia espaços nos seguintes lugares: 
• Imediatamente antes e após parêntese,colchete ou chave, como em: 
Esconder número das linhas 
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1198517775bbf7990449680b222cdf1031ec3e9f_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1198517775bbf7990449680b222cdf1031ec3e9f_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-db80ba443f15bb032b3887415207177314078fbd_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-db80ba443f15bb032b3887415207177314078fbd_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-52e62c8cb0aa2e1ed8973962f5cd85d34deb8e9f_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-f8e737acdbe2a76a3535c5ebb688f7b5a45940f7_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-f8e737acdbe2a76a3535c5ebb688f7b5a45940f7_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0a1f7aad87e396ea182c83492d85cb4c67654c19_1
http://www.python.org.br/wiki/GuiaDeEstilo#
 1 spam( ham[ 1 ], { eggs: 2 } )
Sempre escreva assim: 
Esconder número das linhas 
 1 spam(ham[1], {eggs: 2})
• Logo antes de uma vírgula, ponto-e-vírgula ou dois-pontos: 
Esconder número das linhas 
 1 if x == 4 : print x , y ; x , y = y , x
Sempre escreva assim: 
Esconder número das linhas 
 1 if x == 4: print x, y; x, y = y, x
• Logo antes do parêntese que abre a lista de argumentos de uma função, como em: 
Esconder número das linhas 
 1 spam (1)
Sempre escreva: 
Esconder número das linhas 
 1 spam(1)
• Imediatamente antes da chave que abre um índice, como em: 
Esconder número das linhas 
 1 dict ['key'] = list [index]
Sempre escreva: 
Esconder número das linhas 
 1 dict['key'] = list[index]
• Mais do que um espaço em volta de algum operador, para alinhar os operandos: 
Esconder número das linhas 
 1 x = 1
 2 y = 2
 3 long_variable = 3
Escreva: 
Esconder número das linhas 
 1 x = 1
 2 y = 2
 3 long_variable = 3
http://www.python.org.br/wiki/GuiaDeEstilo#CA-9c20c677471de58aa96440a7385d1c7c749e2890_3
http://www.python.org.br/wiki/GuiaDeEstilo#CA-9c20c677471de58aa96440a7385d1c7c749e2890_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-9c20c677471de58aa96440a7385d1c7c749e2890_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-a510bccbd529e1d236c90d936fa1bd077cc445eb_3
http://www.python.org.br/wiki/GuiaDeEstilo#CA-a510bccbd529e1d236c90d936fa1bd077cc445eb_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-a510bccbd529e1d236c90d936fa1bd077cc445eb_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-9058700c275a776645a4b4c5a1ded12ab3fe0d9b_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-2ecefd3aac6d7a2044ee009f799dce112e0fc1d1_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-8e74ba3ff792dcbc61328fb9c09f04b332d07824_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-4174710e366c383b85615dd7172925f7f41f3517_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-eca90f69b9170facff97feb057142e0353861bc9_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-25c5afe1c5850885db20719fec414190426e43d6_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-31254e6265687bbedab583f12cec14dd74234a36_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-90027006eeee7f5dc377714cb08067aa284a66b7_1
• Outras recomendações 
• Sempre circunde os seguintes operadores binários com um único espaço de cada 
lado: =, ==, <, >, !=, <>, <=, >=, in, not in, is, and, or, not 
• Use o seu julgamento na hora de inserir espaços entre operadores aritméticos. 
Exemplos: 
Esconder número das linhas 
 1 i = i+1
 2 submitted = submitted + 1
 3 x = x*2 - 1
 4 hypot2 = x*x + y*y
 5 c = (a+b) * (a-b)
 6 c = (a + b) * (a - b)
• Não use espaços ao redor do sinal de igual (=) quando usado para indicar um valor padrão 
de um argumento. Faça assim, por exemplo: 
Esconder número das linhas 
 1 def complex(real, imag=0.0):
 2 return magic(r=real, i=imag)
• Múltiplos comandos na mesma linha são desencorajados: 
Não faça: 
Esconder número das linhas 
 1 if foo == 'blah': do_blah_thing()
 2 do_one(); do_two(); do_three()
E sim: 
Esconder número das linhas 
 1 if foo == 'blah':
 2 do_blah_thing()
 3 
 4 do_one()
 5 do_two()
 6 do_three()
Comentários
Comentários que contradizem o código são piores do que nenhum comentário. Sempre tenha como 
prioridade manter os comentários atualizados com as mudanças no código! Comentários devem 
sempre ser frases completas e sua primeira letra deve ser maiúscula, a menos que ele comece com 
um identificador que começa com uma letra minúcula. 
Se um comentário for curto, o ponto final deve ser omitido. Comentários grandes normalmente 
consistem de um ou mais parágrafos e sentenças completas, estas sim devem terminar com ponto. 
Você deve usar dois espaços depois do ponto final de uma frase, permitindo que o Emacs ajuste a 
linha de maneira consistente. 
http://www.python.org.br/wiki/GuiaDeEstilo#CA-a9b3c7cc18db37d8cf05900deefeadd6ef60f0d7_6
http://www.python.org.br/wiki/GuiaDeEstilo#CA-a9b3c7cc18db37d8cf05900deefeadd6ef60f0d7_5
http://www.python.org.br/wiki/GuiaDeEstilo#CA-a9b3c7cc18db37d8cf05900deefeadd6ef60f0d7_4
http://www.python.org.br/wiki/GuiaDeEstilo#CA-a9b3c7cc18db37d8cf05900deefeadd6ef60f0d7_3
http://www.python.org.br/wiki/GuiaDeEstilo#CA-a9b3c7cc18db37d8cf05900deefeadd6ef60f0d7_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-a9b3c7cc18db37d8cf05900deefeadd6ef60f0d7_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-97d4e7ac19d44d7b22773d84676d157cca0c2b5c_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-97d4e7ac19d44d7b22773d84676d157cca0c2b5c_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-962db91719561287d764799f4eefb8692c3e62aa_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-962db91719561287d764799f4eefb8692c3e62aa_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1c16a8f6f3dcfde32a9ee1ae9ddd6939a6b4746c_6
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1c16a8f6f3dcfde32a9ee1ae9ddd6939a6b4746c_5
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1c16a8f6f3dcfde32a9ee1ae9ddd6939a6b4746c_4
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1c16a8f6f3dcfde32a9ee1ae9ddd6939a6b4746c_3
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1c16a8f6f3dcfde32a9ee1ae9ddd6939a6b4746c_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1c16a8f6f3dcfde32a9ee1ae9ddd6939a6b4746c_1
http://www.python.org.br/wiki/GuiaDeEstilo#
Programadores de países que não têm o inglês como língua nativa: escrevam seus comentários em 
inglês, a menos que você tenha 120% de certeza de que o código jamais será lido por pessoas que 
não falam sua língua. 
Comentários em bloco devem ser indentados no mesmo nível do código a que se referem. Cada 
linha deve começar com # e um espaço (a menos que o texto dentro do comentário seja indentado). 
Parágrafos dentro de um bloco devem ser separados por uma linha contendo uma única tralha #. O 
bloco inteiro deve ser separado por uma linha em branco no topo e embaixo. 
Comentários na mesma linha devem ser usados esporadicamente. Devem ser separados do comando
por pelo menos dois espaços. Como outros comentários, devem começar com uma tralha e um 
espaço. Não faça comentários em coisas óbvias. Eles distraem mais do que ajudam. 
Docstrings
Escreva docstrings para todo módulo, função, classe e método público. Elas não são necessárias 
para métodos "privados", mas é recomendável ter um comentário que explique o que ele faz. Este 
comentáriodeve estar logo após a declaração. 
A PEP 257 descreve as convenções usadas para docstrings. As mais importantes a lembrar são que 
deve sempre usar aspas triplas (string multiline) mesmo que a dosctring ocupe apenas uma linha 
(facilita uma possível expansão posterior) e que as aspas triplas que finalizam uma dosctring em 
múltiplas linhas deve estar em uma linha separada. 
Esconder número das linhas 
 1 """Return a foobang
 2 
 3 Optional plotz says to frobnicate the bizbaz first.
 4 """
Controle de Versão
Se você utiliza um cabeçalho para RCS ou CVS nos seus arquivos de código, faça como da seguinte
forma: 
Esconder número das linhas 
 1 __version__ = "$Revision: 1.20 $"
 2 # $Source: /cvsroot/python/python/nondist/peps/pep-0008.txt,v $
Estas linhas devem ser incluídas logo após as docstrings do módulo, antes de qualquer código, 
separadas por uma linha em branco acima e abaixo. 
Nomes e Identificadores
As convenções usadas em nomes na biblioteca padrão são um pouco bagunçadas e díficilmente 
vamos conseguir torná-las consistentes. Mesmo assim, vamos a algumas regras. 
• Estilos de nomes 
• Há uma série de diferentes estilos usados para identificadores. É bom saber 
http://www.python.org.br/wiki/GuiaDeEstilo#CA-22aea62b96ac8e682bd15001a43d8b8e91805c29_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-22aea62b96ac8e682bd15001a43d8b8e91805c29_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1b91f17f075ff8e4f234e482275b6bbb7cf72abc_4
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1b91f17f075ff8e4f234e482275b6bbb7cf72abc_3
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1b91f17f075ff8e4f234e482275b6bbb7cf72abc_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-1b91f17f075ff8e4f234e482275b6bbb7cf72abc_1
http://www.python.org.br/wiki/GuiaDeEstilo#
reconhecer qual estilo está sendo usado, independentemente do que está sendo feito. 
Os estilos mais comuns são: 
• "minúsculas_separadas_com_underscore" 
• "MAIÚSCULAS_SEPARADAS_COM_UNDERSCORE" 
• "PalavrasComeçandoPorMaíusculas" 
• "nome!ComeçandoPorMinúscula" 
• "Palavras_Começando_Por_Maiúsculas_E_Underscore" (horrível!) 
Há ainda o costume de usar um prefixo curto para agrupar nomes relacionados. Por 
exemplo, a função os.stat() retorna uma tupla cujos ítens têm nomes como 
st_mode, st_size, st_mtime e assim port diante. A biblioteca X11 usa um X como 
prefixo para todas suas funções públicas. Este estilo não é muito comum em Python, 
porque, geralmente, atributos e nomes de métodos já são prefixados por um objeto, e 
funções, por um módulo. 
Adicionalmente, as seguintes formas de usar underscores antes ou depois do 
identificador são reconhecidas. 
• _underscore_no_inicio: costuma indicar que o atributo é de uso interno. 
("from M import *" não importa objetos cujos nomes comecem com _ ) 
• underscore_no_fim_: usado para evitar conflitos com palavras-chave.por 
exemplo: "Tkinter.Toplevel(master, class_='ClassName')". 
• __dois_underscores_no_início: atributo privado da classe (
classe.__atributo é convertido para classe.__classe__atributo ). 
• __dois_underscores_no_início_e_no_fim__: atributos ou objetos 
especiais, como __init__ , __import__ ou __file__ . As vezes estes podem 
ser definidos pelo usuário para disparar alguma ação especial (sobrecarga de 
operadores, por exemplo). 
• Convenções para Nomes: 
• Nomes a evitar Nunca use os caracteres 'l' (L minúsculo), 'O' (o maiúsculo) ou 'I' (i 
maiúsculo) sozinhos como nomes de variáveis. Em algumas fontes, esses caracteres 
são indistinguíveis dos números um e zero. Quando tentado a usar somente 'l', use 'L'.
• Nomes de Módulos 
Módulos devem ter nomes ou em PalavrasComeçandoPorMaíusculas ou 
totalmente_em_minúsculas. Módulos que contenham uma única classe podem ter o 
mesmo nome da classe (como no módulo StringIO, por exemplo). Módulos que 
exportam apenas funções são normalmente nomeados em minúsculas. Como nomes 
de módulos são mapeados para nomes de arquivos, e alguns sistemas de arquivo não 
apenas desprezam maiúsculas e minúsculas como também reduzem o comprimento 
do nome, é importante que eles sejam escolhidos de forma a serem curtos e não 
entrar em conflito com outros módulos. Isso não é um problema em sistemas Unix ou
http://www.python.org.br/wiki/Come%C3%A7andoPorMin%C3%BAscula
Linux, mas pode ser um problema se o código for usado em Mac ou Windows. 
Há uma convenção surgindo de que quando uma extensão escrita em C ou C++ tem 
um módulo em Python que ofereça uma interface de alto nível, este módulo deve ter 
o nome em PalavrasComeçandoPorMaiúsculas, enquanto o módulo em C/C++ deve 
ter o nome todo em minúsculas, começando por um underscore (_socket, por 
exemplo). 
• Nomes de Classes 
Quase sem exceção, nomes de classe devem usar o padrão de 
PalavrasComeçandoPorMaiúscula, exceto no caso de classes para uso interno, que 
devem começar com um underscore. 
• Nomes de Exceptions 
Se um módulo define uma única exception usada para todos os tipos de erro, ela é 
geralmente chamada "error" ou "Error". 
• Nomes de Funções 
Funções globais, exportadas por um módulo podem usar tanto o padrão 
PalavrasComeçandoPorMaiúscula, quanto totalmente em minúsculas ou 
minúsculas_separadas_por_underscore). Não há nenhuma preferência clara, mas o 
primeiro estilo costuma ser mais usado para funções que provêm mais 
funcionalidade, enquanto o segundo é usado por funções mais simples. 
• Variáveis Globais Variáveis globais devem ser usadas somente dentro do módulo. As 
convenções são as mesmas para funções. Módulos que são projetados para ser usados
com 'from M import *' devem ter suas globais com um underscore como prefixo, 
para evitar que sejam exportadas. 
• Nomes de Métodos 
Vale o mesmo para as funções. Use dois underscores quando for importante que 
apenas a classe atual acesse um atributo. (mas tenha em mente que isso não torna o 
método realmente privado. Um usuário insistente ainda pode acessá-lo de diversas 
formas, através do atributo __dict__ por exemplo). 
• Herança 
• Decida sempre se os métodos de uma classe e as variáveis de uma instância serão 
públicos ou não. Em geral, nunca torne variáveis públicas, a menos que você esteja 
implementando algum tipo de registro. Decida ainda se os atributos serão privados 
ou não. A diferença entre eles é que atributos privados são aqueles que jamais terão 
utilidade para uma subclasse, enquanto os públicos podem ter. É prudente projetar 
suas classes tendo a possibilidade de herança em mente. 
Atributos privados devem ter dois underscores no começo e nenhum no fim. Atributos não-públicos
devem ter um underscore no começo e nenhum no fim. 
Atributos públicos não devem ter underscores nem no começo, nem no fim, a menos que eles 
entrem em conflito com palavras reservadas, caso em que um único underscore no fim é preferível 
a um no começo, ou a uma pronúncia diferente, como class_ ao invés de klass. 
Recomendações ao Programar
Comparações com singletons, como None, False e True devem sempre ser feitas com "is" ou "is
not". Além disso, cuidado para não escrever "if x" quando o que você deseja é "if x is not None", 
como ao testar se uma variável ou argumento que tem um valor padrão de None, teve outro valor 
atribuído. 
Classes são sempre preferidas à strings, como em exceptions. Módulos ou pacotes devem definir 
sua própria classe-exception base, que deve ser uma subclasse da classe Exception. Sempre inclua 
uma docstring. Exemplo: 
Esconder número das linhas 
 1 class MessageError(Exception):
 2 """Base class for errors in the email package."""
Use métodos do objeto string ao invés do módulo string, a menos que seja exigida compatibilidade 
com versões de Python anteriores à 2.0. Os métodos são muito mais rápidos e têm a mesma API de 
strings Unicode. 
Evite fatiar strings quando verificando prefixos ou sufixos. Use os métodos startswith() e 
endswith(), que são mais eficientes e menos sujeitos a erro. Por exemplo:Não use: 
Esconder número das linhas 
 1 if foo[:3] == 'bar':
E sim: 
Esconder número das linhas 
 1 if foo.startswith('bar'):
A exceção é se existir a necessidade do seu código de funcionar com versões de Python anteriores à 
1.5.2. 
Comparações de tipo de objetos devem sempre usar isinstance() ao invés de comparar tipos 
diretamente. Exemplo: 
Não use: 
Esconder número das linhas 
 1 if type(obj) is type(1):
E sim: 
Esconder número das linhas 
 1 if isinstance(obj, int):
http://www.python.org.br/wiki/GuiaDeEstilo#CA-b6793579c8ead83d1df4a96f5520ee70c458f34e_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-0850cc5dd6eb87989981a0a7ff1af0ad7041dc98_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-d6fbb04013f6e8c36cb88132e04a282bc3f051c7_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-80023b43cf17a989b268cd6e6f3d4043c2f8fff5_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-6e39430cdc3f3fc4551b7575d914cf2c20a0254d_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-6e39430cdc3f3fc4551b7575d914cf2c20a0254d_1
http://www.python.org.br/wiki/GuiaDeEstilo#
Quando estiver verificando se o objeto é uma string, lembre-se que ele também pode ser uma string
unicode! Em Python 2.3, str e unicode têm uma classe base em comum, basestring, então você 
pode simplesmente escrever: 
Esconder número das linhas 
 1 if isinstance(obj, basestring):
Em Python 2.2 o módulo types tem o tipo StringTypes para o mesmo propósito: 
Esconder número das linhas 
 1 from types import StringTypes
 2 if isinstance(obj, StringTypes):
Com seqüências (strings, listas, tuples), tenha em mente o fato de que, quando vazias, elas são 
falsas em um contexto booleano, portanto, "if not seq" ou "if seq" são preferíveis a "if len(seq)" ou 
"if not len(seq)". 
Não use strings que dependam de uma quantia significativa de espaços no começo ou no fim. A 
quantidade desses espaços é visualmente indistinguível e alguns editores até mesmo a ajustam. 
Não compare valores booleanos com True e False usando == (o tipo Bool é novo em Python 
2.3) 
Não use 
Esconder número das linhas 
 1 if greeting == True:
E sim 
Esconder número das linhas 
 1 if greeting:
Referências
1. PEP 7, Style Guide for C Code, van Rossum 
2. http://www.python.org/doc/essays/styleguide.html 
3. PEP 257, Docstring Conventions, Goodger, van Rossum 
4. http://www.wikipedia.com/wiki/CamelCase 
5. Barry's GNU Mailman/mimelib style guide 
Copyright
• Este documento foi disponibilizado em domínio público. 
Traduzido por PedroWerneck 
1. PEP 7, Style Guide for C Code, van Rossum (1)
http://www.python.org.br/wiki/GuiaDeEstilo#fndef-e635b63348b505e826ab3c2ebebeccfb5741fa53-0
http://www.python.org.br/wiki/PedroWerneck
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/mimelib/mimelib/STYLEGUIDE.txt?rev=1.1&content-type=text/vnd.viewcvs-markup
http://www.wikipedia.com/wiki/CamelCase
http://www.python.org/doc/essays/styleguide.html
http://www.python.org.br/wiki/GuiaDeEstilo#CA-e7e93d7d9eaaa797f82bfb7f7072b7e525947f8c_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-9c5a88f069308046c8d7ffc44204922529a65244_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-fa307587b43a9c55f942cd55c14db990602c7310_2
http://www.python.org.br/wiki/GuiaDeEstilo#CA-fa307587b43a9c55f942cd55c14db990602c7310_1
http://www.python.org.br/wiki/GuiaDeEstilo#
http://www.python.org.br/wiki/GuiaDeEstilo#CA-5d543ad18304ad0e10358aa5f6faf30d728b4b84_1
http://www.python.org.br/wiki/GuiaDeEstilo#
	GuiaDeEstilo
	PEP 8 - Guia de Estilo Para Python
	Introdução
	Uma Consistência Tosca é o Bicho-Papão das Pequenas Mentes
	Formatação do Código
	Comentários
	Docstrings
	Controle de Versão
	Nomes e Identificadores
	Recomendações ao Programar
	Referências
	Copyright

Outros materiais