Ainda estou me acostumando com as convenções do python e usando pylint
para tornar meu código mais python , mas estou confuso pelo fato de que o pylint não gosta de nomes de variáveis com um único caractere. Eu tenho alguns loops como este:
for x in x_values:
my_list.append(x)
e quando eu corro pylint
, estou obtendo Invalid name "x" for type variable (should match [a-z_][a-z0-9_]{2,30}
- isso sugere que um nome de variável válido deve ter entre 3 e 31 caracteres, mas eu olhei através das convenções de nomenclatura PEP8 e não vejo nada explícito sobre letras minúsculas simples , e vejo muitos exemplos que os usam.
Há algo que estou perdendo no PEP8 ou este é um padrão exclusivo do pylint?
fonte
_
para manter valores temporários é antipadrão. Variáveis de sublinhado indicam valores irrelevantes / descartados, não atribuição temporária, comoi
oux
. Além disso, no intérprete tem um significado especial para conter o último valor da última expressão.Um pouco mais de detalhes sobre o que maca alex notou: você pode dizer ao PyLint para fazer exceções para nomes de variáveis que (você jura o dedo mínimo) são perfeitamente claros, embora tenham menos de três caracteres. Encontre ou adicione ao seu arquivo pylintrc , sob o
[FORMAT]
cabeçalho:Aqui pk (para chave primária), xey são nomes de variáveis que adicionei.
fonte
pylint 1.8.3
. pylint.pycqa.org/en/1.8/user_guide/options.htmlreturn [customer_address for customer_address in thing.get_customer_addresses() if customer_address.is_proper()]
vsreturn [a for a in thing.get_customer_addresses() if a.is_proper()]
I afirmam que o último é mais claro, pois a é óbvio a partir do contexto. Em geral, o comprimento da variável deve se correlacionar com o escopo da variável.Em linguagens fortemente tipadas, as variáveis de nome de 1 letra podem ser ok-ish, porque geralmente você obtém o tipo próximo ao nome na declaração da variável ou no protótipo de função / método:
Em Python, você não obtém essas informações, portanto, se escrever:
você não está deixando absolutamente nenhuma pista para a equipe de manutenção sobre o que a função poderia estar fazendo, como é chamada e o que retorna. Portanto, em Python, você tende a usar nomes descritivos:
e você até adiciona uma docstring explicando o que as coisas fazem e quais tipos são esperados.
fonte
with open(FILE) as f: items = f.readlines()
por exemplo, onde a variávelf
é realmente óbvia, mas recebo avisos de pylint. Isso me fez mudar para flake8.f
é totalmente diferente de umaOptionList
chamada c. Especialmente quando não consigo renomeá-lo parafunction
porque ele sombreia um embutido.Hoje em dia também existe a opção de substituir o regexp. Ou seja, se você quiser permitir caracteres únicos como variáveis:
Portanto,
pylint
corresponderá ao PEP8 e não trará violações adicionais no topo. Além disso, você pode adicioná-lo.pylintrc
.fonte
> 1.8.3
esta parece ser a resposta. Pode colocar isso no seu.pylintrc
, bem como para configuração permanente:variable-rgx=[a-z0-9_]{1,30}$
.A razão mais profunda é que você pode se lembrar o que você pretendia
a
,b
,c
,x
,y
, ez
para dizer quando escreveu seu código, mas quando os outros lê-lo, ou mesmo quando você voltar para o seu código, o código torna-se muito mais legível quando você dá é um nome semântico. Não estamos escrevendo coisas uma vez no quadro-negro e depois apagando. Estamos escrevendo um código que pode durar uma década ou mais e ser lido muitas e muitas vezes.Use nomes semânticos. Nomes semânticas que usei ter sido como
ratio
,denominator
,obj_generator
,path
, etc. Pode demorar um segundo extra ou dois para digitá-los para fora, mas o tempo que você salvar tentando descobrir o que você escreveu até meia hora a partir de então vale a pena .fonte