Vindo de um plano de fundo em C #, a convenção de nomenclatura para nomes de variáveis e métodos geralmente é camelCase ou PascalCase:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
No Python, vi o acima, mas também vi sublinhados sendo usados:
# python example
this_is_my_variable = 'a'
def this_is_my_function():
Existe um estilo de codificação definitivo mais preferível para Python?
findMeAClass
talvez seja mais feio quefind_me_a_class
.O Guia de estilos do Google Python possui a seguinte convenção:
Um esquema de nomeação semelhante deve ser aplicado a um
CLASS_CONSTANT_NAME
fonte
property
... talvez seja uma questão do que o item está fingindo ser, ao invés do que ele realmente éDavid Goodger (em "Code Like a Pythonista" aqui ) descreve as recomendações do PEP 8 da seguinte maneira:
joined_lower
para funções, métodos, atributos, variáveisjoined_lower
ouALL_CAPS
para constantesStudlyCaps
para aulascamelCase
apenas para estar em conformidade com convenções pré-existentesfonte
joined_lower
para constantes , apenas "todas as letras maiúsculas com sublinhados separando palavras". Curioso também sobre o novo recurso enum .StudlyCaps for classes
é uma ótima regra universal para aulas em quase todos os idiomas. Então por que alguns python built-in classes (tais comodatetime.datetime
não seguir essa convenção?unittest.TestCase.assertEqual
amigos também não seguem a convenção snake_case. A verdade é que partes da biblioteca padrão do Python foram desenvolvidas antes das convenções se solidificarem, e agora estamos presos a elas.Como o Guia de estilo do código Python admite,
Observe que isso se refere apenas à biblioteca padrão do Python . Se eles não conseguem ser tão consistentes, dificilmente há muita esperança de ter uma convenção geralmente aderida a todos os códigos Python, existe?
A partir daí, e a discussão aqui, eu deduzir que é não um pecado horrível se alguém continua usando por exemplo, C # 's (clara e bem estabelecida) do Java ou convenções de nomenclatura para variáveis e funções quando atravessar para Python. Tendo em mente, é claro, que é melhor respeitar o estilo predominante de uma base de código / projeto / equipe. Como o Python Style Guide aponta, a consistência interna é mais importante.
Sinta-se livre para me rejeitar como herege. :-) Como o OP, eu não sou um "Pythonista", ainda não.
fonte
Existe o PEP 8 , como mostram outras respostas, mas o PEP 8 é apenas o guia de estilo para a biblioteca padrão e é considerado como evangelho nela. Um dos desvios mais freqüentes do PEP 8 para outros trechos de código é a nomeação de variáveis, especificamente para métodos. Não existe um estilo predominante, embora, considerando o volume de código que usa mixedCase, se alguém fizesse um censo estrito, provavelmente terminaria com uma versão do PEP 8 com mixedCase. Há pouco outro desvio do PEP 8 que é tão comum.
fonte
Como mencionado, o PEP 8 diz para usar
lower_case_with_underscores
para variáveis, métodos e funções.Prefiro usar
lower_case_with_underscores
para variáveis emixedCase
métodos e funções para tornar o código mais explícito e legível. Assim, seguindo o Zen do Python, "explícito é melhor que implícito" e "Legibilidade conta"fonte
além do que @JohnTESlade respondeu. O guia de estilo python do Google tem algumas recomendações bem legais,
Nomes a evitar
\__double_leading_and_trailing_underscore__ names
(reservado por Python)Convenção de nomes
CapWords
para nomes de classes, maslower_with_under.py
para nomes de módulos. Embora existam muitos módulos nomeadosCapWords.py
, isso agora é desencorajado porque é confuso quando o módulo recebe o nome de uma classe. ("espera - eu escreviimport StringIO
oufrom StringIO import StringIO
?")Diretrizes derivadas das recomendações de Guido
fonte
A maioria das pessoas python prefere sublinhados, mas mesmo que eu esteja usando python há mais de 5 anos, ainda não gosto deles. Eles só parecem feios para mim, mas talvez isso seja todo o Java na minha cabeça.
Eu simplesmente gosto mais do CamelCase, pois ele se encaixa melhor na maneira como as classes são nomeadas. Parece mais lógico
SomeClass.doSomething()
que issoSomeClass.do_something()
. Se você procurar no índice global do módulo em python, encontrará os dois, devido ao fato de ser uma coleção de bibliotecas de várias fontes que aumentaram horas extras e não algo que foi desenvolvido por uma empresa como a Sun com regras estritas de codificação . Eu diria que o essencial é: use o que quiser melhor, é apenas uma questão de gosto pessoal.fonte
make_xpath_predicate
,make_xpath_expr
,make_html_header
,make_html_footer
SomeClass.doSomething()
(os métodos estáticos são geralmente raros) que você costuma chamar #an_instance.do_something()
Pessoalmente, tento usar o CamelCase para classes, métodos e funções mixedCase. As variáveis geralmente são separadas por sublinhado (quando me lembro). Dessa forma, posso dizer rapidamente o que exatamente estou chamando, em vez de tudo parecer o mesmo.
fonte
Há um artigo sobre isso: http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf
TL; DR Diz que snake_case é mais legível que camelCase. É por isso que as línguas modernas usam (ou deveriam usar) cobra sempre que podem.
fonte
O estilo de codificação geralmente faz parte dos padrões de política / convenção internos de uma organização, mas acho que, em geral, o estilo all_lower_case_underscore_separator (também chamado snake_case) é mais comum em python.
fonte
Pessoalmente, uso as convenções de nomenclatura do Java ao desenvolver em outras linguagens de programação, pois é consistente e fácil de seguir. Dessa forma, não estou lutando continuamente sobre quais convenções usar e que não devem ser a parte mais difícil do meu projeto!
fonte
library_function(my_arg)
).Normalmente, segue-se as convenções usadas na biblioteca padrão do idioma.
fonte