Nomes válidos e inválidos e convenções de nomeação de identificadores (por exemplo, nomes de variáveis) em Python

O negócio

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)

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.

Copied title and URL