Eu sou um programador Python principalmente que usa o pylint para aprender código-fonte. Consigo eliminar todos os avisos, exceto um: Nome inválido para uma constante. Mudar o nome para todas as letras maiúsculas corrige isso, mas devo mesmo fazer isso? Se eu fizer isso, acho que meu código parece feio, pois a maioria das variáveis é constante (de acordo com pylint).
python
coding-style
coding-standards
conventions
Abhishek Kumar
fonte
fonte
NOTES_DIRECTORY = argv[1] chdir(NOTES_DIRECTORY) FILES = glob('*.txt') RAND_FILE = choice(FILES) with open(RAND_FILE) as notes_file: POINTS = notes_file.readlines() RAND_POINT = choice(POINTS)
Respostas:
Você provavelmente está escrevendo um código como este:
Você deve mover esse código para uma função:
Pylint assume que o código que realmente faz o trabalho estará dentro de uma função. Como você tem esse código no nível superior do seu código, em vez de dentro de uma função, ele fica confuso.
De um modo geral, é melhor estilo trabalhar dentro de uma função do que no nível superior. Isso permite que você organize melhor o que está fazendo e facilita a reutilização. Você realmente deve ter apenas código executando um algoritmo fora de uma função em um script rápido e sujo.
fonte
Sim. De acordo com a regra do PEP8s sobre constantes :
Versão longa:
Na comunidade Python (como em muitas outras comunidades) existem convenções sobre como escrever código. Isso é diferente do código de trabalho : mesmo se você escrever todas as suas constantes em minúsculas, seu código ainda funcionará.
Mas existe um consenso da comunidade (conforme documentado no PEP8) que é "imposto" com ferramentas como o pylint . Se você programa para a sua própria felicidade, pode negligenciar as dicas que o pilão dá. Se você deseja um intercâmbio aberto com a comunidade, também conhecido como »alguém além de mim deve usar meu código«, você deve preparar seu código de acordo com o PEP8.
fonte
pylint
errar. O Python não fornece uma maneira de distinguir uma constante de uma variável, exceto que a constante deve sempre ter o mesmo valor.pylint
assume que tudo o que é definido apenas uma vez e nunca muda é uma constante, mas, a menos que se pretenda que seja uma constante, isso poderia ser apenas um artefato da implementação. E, especificamente, o código fornecido no comentário da pergunta possui valores que serão diferentes a cada execução, portanto, não devem ser considerados constantes, mesmo que o pylint pense que são.const
palavra - chave. Embora o valor inicial seja diferente, exceto talvezPI
.pylint
assume o último mesmo quando o primeiro é o caso.A norma da comunidade PEP8 e Python é usar
ALL_CAPS_CONSTANTS
. É uma pista visual comum, usada há décadas em C, Java, Perl, PHP, Python, bash e outras linguagens de programação e ambientes de shell. Mas no jargão online moderno, TODOS OS TAMPAS SIGNIFICA GRITOS . E gritar é rude.Python é, no entanto, bastante inconsistente
ALL_CAPS_CONSTANTS
. JavaScript pode terMath.PI
, mas Python temmath.pi
. Não há constante mais reconhecível ou duradoura que π. Ou consideresys.version_info
, a versão do Python em que você está executando. 100% constante durante a vida do seu programa - muito mais do quePORT
ouMAX_ITERATIONS
ou outras constantes que você definir. Ou que talsys.maxsize
? O valor inteiro nativo máximo da sua plataforma é constante ao longo de não apenas uma ou duas execuções do programa, mas também da vida útil do seu hardware.Se estas constantes - incluindo alguns como π e e que são constantes fundamentais do universo, e não vai variar ao longo do toda a eternidade - se eles podem estar em letras minúsculas, bem ... assim pode outras constantes. Você pode escolher.
Lembre-se, o PEP8 é um guia de estilo. Uma diretriz, não uma lei. Uma diretriz frequentemente violada mesmo pela biblioteca padrão do Python. E citando outra diretriz básica do Python, PEP20 (também conhecida como "O Zen do Python"):
Em uma nota prática, quando um programa começa
YELLY_CONSTANT
eSHOUTY_PARAMETER
começa a ralar, ajuda a lembrar que as constantes all-caps geralmente não são realmente ideais platônicos duradouros , mas parâmetros de um programa executado. Não há nada verdadeiramente constante sobrePORT
,SITENAME
ouNUMRUNS
, e eles não têm de ser geridos como globais programa independente. Por exemplo, eles podem ser inseridos em um dicionário como um pacote globalmente acessível de parâmetros de programa:O Python também possui um bom recurso de passagem de parâmetros de palavras-chave que reduz a necessidade de usar
APPARENTLY_ANGRY_GLOBAL_VARIABLES
:Na prática, muitos desses valores serão (ou deveriam ser) lidos em arquivos de configuração, variáveis de ambiente do SO, argumentos de linha de comando ou outras fontes para satisfazer a inversão do princípio / padrão de controle . Mas essa é uma história maior para outro dia.
fonte
Sim, é bastante comum na maioria das linguagens de programação (pelo menos nas que eu uso).
Você pode consultar este link do Google para compartilhar um estilo comum entre desenvolvedores da mesma equipe.
É aconselhável usar
fonte