Em Python, os identificadores (nomes de variáveis, funções, classes, etc.) precisam de ser definidos de acordo com regras. Nomes que não seguem as regras não podem ser utilizados como identificadores e resultarão num erro.
A seguinte informação é fornecida aqui.
- Caracteres que podem e não podem ser utilizados em identificadores (nomes)
- Caracteres ASCII
- Carácter unicode
- normalização (por exemplo, em matemática)
- Verificar se a cadeia é um identificador válido:
isidentifier()
- Palavras que não podem ser utilizadas como identificadores (nomes) (palavras reservadas)
- Palavras que não devem ser utilizadas como identificadores (nomes)
- Convenções de nomeação para PEP8
A seguinte descrição é dada em Python 3, e pode ser diferente em Python 2.
- Caracteres que podem e não podem ser utilizados em identificadores (nomes)
- Verifique se a cadeia é um identificador válido: isidentifier()
- Palavras que não podem ser utilizadas como identificadores (nomes) (palavras reservadas)
- Palavras que não devem ser utilizadas como identificadores (nomes)
- Convenções de nomeação para PEP8
Caracteres que podem e não podem ser utilizados em identificadores (nomes)
Indica caracteres que podem e não podem ser utilizados como identificadores (nomes).
Além disso, embora haja muitas coisas sobre as quais escrever, basicamente tudo o que precisa de se lembrar é o seguinte.
- Usar letras maiúsculas e minúsculas, números, e sublinhados.
- A primeira (primeira) letra não pode ser um número.
Caracteres ASCII
Os caracteres ASCII que podem ser utilizados como identificadores (nomes) são alfabetos maiúsculos e minúsculos (A~Z,a~z), números (0~9), e sublinhados (_). O alfabeto é sensível às letras maiúsculas e minúsculas.
AbcDef_123 = 100
print(AbcDef_123)
# 100
Os símbolos para além dos sublinhados não podem ser utilizados.
# AbcDef-123 = 100
# SyntaxError: can't assign to operator
Além disso, os números não podem ser utilizados no início (primeira letra).
# 1_abc = 100
# SyntaxError: invalid token
Os sublinhados também podem ser utilizados no início.
_abc = 100
print(_abc)
# 100
No entanto, note-se que um sublinhado no início pode ter um significado especial.
Carácter unicode
Desde Python 3, os caracteres Unicode também podem ser utilizados.
変数1 = 100
print(変数1)
# 100
Nem todos os caracteres Unicode podem ser utilizados, e dependendo da categoria Unicode, alguns não podem ser utilizados. Por exemplo, símbolos tais como sinais de pontuação e pictogramas não podem ser utilizados.
# 変数。 = 100
# SyntaxError: invalid character in identifier
# ☺ = 100
# SyntaxError: invalid character in identifier
Ver a documentação oficial para os códigos de categoria Unicode que podem ser utilizados.
Em muitos casos, não há vantagem em utilizar caracteres chineses, etc., simplesmente porque os caracteres Unicode também podem ser utilizados (sem erro).
normalização (por exemplo, em matemática)
Os caracteres unicode são convertidos para a forma normalizada NFKC para interpretação. Por exemplo, alfabetos de largura total são convertidos em alfabetos de meia largura (caracteres ASCII).
Note-se que mesmo que o código fonte mostre uma visualização diferente, é considerado o mesmo objecto e será sobregravado.
ABC = 100
ABC = -100
print(ABC)
# -100
print(ABC)
# -100
print(ABC is ABC)
# True
Verifique se a cadeia é um identificador válido: isidentifier()
Se uma string é ou não válida como identificador pode ser verificada com o método de string isidentifier().
Retorna verdadeiro se for válido como um identificador, e falso se for inválido.
print('AbcDef_123'.isidentifier())
# True
print('AbcDef-123'.isidentifier())
# False
print('変数1'.isidentifier())
# True
print('☺'.isidentifier())
# False
Palavras que não podem ser utilizadas como identificadores (nomes) (palavras reservadas)
Existem algumas palavras (palavras reservadas) que não podem ser utilizadas como identificadores mesmo que sejam strings válidas como identificadores (nomes).
Uma vez que uma palavra reservada é uma string válida como identificador, isidentifier() retorna verdadeiro, mas ocorre um erro se for utilizada como identificador.
print('None'.isidentifier())
# True
# None = 100
# SyntaxError: can't assign to keyword
Para obter uma lista de palavras reservadas e verificar se uma string é uma palavra reservada, utilize o módulo de palavras-chave da biblioteca padrão.
Palavras que não devem ser utilizadas como identificadores (nomes)
Os nomes das funções incorporadas em Python, por exemplo, podem ser utilizados como identificadores, para que lhes possam ser atribuídos novos valores como variáveis.
Por exemplo, len() é uma função integrada que devolve o número de elementos de uma lista ou o número de caracteres de uma cadeia de caracteres.
print(len)
# <built-in function len>
print(len('abc'))
# 3
Se atribuir um novo valor a este nome len, a função original será sobrescrita e tornar-se-á inutilizável. Note-se que nenhum erro ou aviso será impresso ao atribuir um novo valor.
print(len('abc'))
# 3
len = 100
print(len)
# 100
# print(len('abc'))
# TypeError: 'int' object is not callable
Outro erro comum é usar lista = [0, 1, 2], o que torna impossível a utilização de lista(). Tenha cuidado.
Convenções de nomeação para PEP8
PEP significa Python Enhancement Proposal, um documento que descreve as novas características e outros aspectos de Python.
PEP stands for Python Enhancement Proposal. A PEP is a design document providing information to the Python community, or describing a new feature for Python or its processes or environment.
PEP 1 — PEP Purpose and Guidelines | Python.org
PEP8 é o oitavo, e descreve o “Style Guide for Python Code”, ou seja, o guia de estilo para Python.
São também mencionadas as convenções de nomeação.
Ver a ligação acima para mais detalhes, mas por exemplo, recomenda-se o seguinte estilo de escrita.
- Módulo
lowercase_underscore
- Caixa minúscula + sublinhado
- Pacote
lowercase
- todas as letras minúsculas
- Aulas, Excepções
CapitalizedWords
(CamelCase
)- Capitalizar a primeira letra de uma palavra, sem sublinhado
- Funções, variáveis, e métodos
lowercase_underscore
- Caixa minúscula + sublinhado
- constante
ALL_CAPS
- Maiúsculas + sublinhado
No entanto, se a sua organização não tiver convenções de nomeação próprias, recomenda-se que siga PEP8.