Noms valides et invalides et conventions de dénomination pour les identifiants (par exemple, les noms de variables) en Python

Affaires

En Python, les identificateurs (noms de variables, de fonctions, de classes, etc.) doivent être définis selon des règles. Les noms qui ne respectent pas les règles ne peuvent pas être utilisés comme identificateurs et entraîneront une erreur.

Les informations suivantes sont fournies ici.

  • Caractères qui peuvent et ne peuvent pas être utilisés dans les identifiants (noms)
    • Caractères ASCII
    • Caractère Unicode
      • normalisation (par exemple, en mathématiques)
  • Vérifie si la chaîne est un identifiant valide :isidentifier()
  • Mots qui ne peuvent pas être utilisés comme identifiants (noms) (mots réservés)
  • Les mots qui ne doivent pas être utilisés comme identifiants (noms)
  • Conventions de dénomination pour PEP8

La description suivante est donnée dans Python 3, et peut être différente dans Python 2.

Caractères qui peuvent et ne peuvent pas être utilisés dans les identifiants (noms)

Indique les caractères qui peuvent et ne peuvent pas être utilisés comme identifiants (noms).

En outre, bien qu'il y ait beaucoup de choses à écrire, tout ce que vous devez retenir, c'est ce qui suit.

  • Utilisez des lettres majuscules et minuscules, des chiffres et des caractères de soulignement.
  • La première (première) lettre ne peut pas être un chiffre.

Caractères ASCII

Les caractères ASCII qui peuvent être utilisés comme identifiants (noms) sont les alphabets majuscules et minuscules (A~Z,a~z), les chiffres (0~9) et les traits de soulignement (_). L'alphabet est sensible à la casse.

AbcDef_123 = 100
print(AbcDef_123)
# 100

Les symboles autres que les caractères de soulignement ne peuvent pas être utilisés.

# AbcDef-123 = 100
# SyntaxError: can't assign to operator

En outre, les chiffres ne peuvent pas être utilisés au début (première lettre).

# 1_abc = 100
# SyntaxError: invalid token

Les tirets bas peuvent également être utilisés au début.

_abc = 100
print(_abc)
# 100

Toutefois, notez qu'un trait de soulignement au début peut avoir une signification particulière.

Caractère Unicode

Depuis Python 3, les caractères Unicode peuvent également être utilisés.

変数1 = 100
print(変数1)
# 100

Tous les caractères Unicode ne peuvent pas être utilisés, et selon la catégorie Unicode, certains ne peuvent pas être utilisés. Par exemple, les symboles tels que les signes de ponctuation et les pictogrammes ne peuvent pas être utilisés.

# 変数。 = 100
# SyntaxError: invalid character in identifier

# ☺ = 100
# SyntaxError: invalid character in identifier

Voir la documentation officielle pour les codes de catégorie Unicode qui peuvent être utilisés.

Dans de nombreux cas, il n'y a aucun avantage à utiliser des caractères chinois, etc., simplement parce que les caractères Unicode peuvent également être utilisés (sans erreur).

normalisation (par exemple, en mathématiques)

Les caractères Unicode sont convertis à la forme normalisée NFKC pour l'interprétation. Par exemple, les alphabets pleine largeur sont convertis en alphabets demi-largeur (caractères ASCII).

Notez que même si le code source montre un affichage différent, il est considéré comme le même objet et sera écrasé.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

Vérifier si la chaîne est un identifiant valide : isidentifier()

La méthode isidentifier() permet de vérifier si une chaîne de caractères est valide ou non en tant qu'identifiant.

Il renvoie true (vrai) s'il est valide en tant qu'identifiant, et false (faux) s'il n'est pas valide.

print('AbcDef_123'.isidentifier())
# True

print('AbcDef-123'.isidentifier())
# False

print('変数1'.isidentifier())
# True

print('☺'.isidentifier())
# False

Mots qui ne peuvent pas être utilisés comme identifiants (noms) (mots réservés)

Certains mots (mots réservés) ne peuvent pas être utilisés comme identifiants, même s'il s'agit de chaînes de caractères valides comme identifiants (noms).

Puisqu'un mot réservé est une chaîne valide en tant qu'identifiant, isidentifier() renvoie vrai, mais une erreur se produit s'il est utilisé comme identifiant.

print('None'.isidentifier())
# True

# None = 100
# SyntaxError: can't assign to keyword

Pour obtenir une liste des mots réservés et vérifier si une chaîne de caractères est un mot réservé, utilisez le module keyword de la bibliothèque standard.

Les mots qui ne doivent pas être utilisés comme identifiants (noms)

Les noms des fonctions intégrées de Python, par exemple, peuvent être utilisés comme identifiants, de sorte que vous pouvez leur attribuer de nouvelles valeurs en tant que variables.

Par exemple, len() est une fonction intégrée qui renvoie le nombre d'éléments dans une liste ou le nombre de caractères dans une chaîne de caractères.

print(len)
# <built-in function len>

print(len('abc'))
# 3

Si vous attribuez une nouvelle valeur à ce nom len, la fonction originale sera écrasée et deviendra inutilisable. Notez qu'aucune erreur ou avertissement ne sera imprimé lors de l'assignation d'une nouvelle valeur.

print(len('abc'))
# 3

len = 100
print(len)
# 100

# print(len('abc'))
# TypeError: 'int' object is not callable

Une autre erreur courante est d'utiliser list = [0, 1, 2], ce qui rend impossible l'utilisation de list(). Faites attention.

Conventions de dénomination pour PEP8

PEP est l'acronyme de Python Enhancement Proposal, un document qui décrit les nouvelles fonctionnalités et autres aspects 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 est le huitième, et il décrit le “Style Guide for Python Code”, c'est-à-dire le guide de style pour Python.

Les conventions de nommage sont également mentionnées.

Voir le lien ci-dessus pour plus de détails, mais à titre d'exemple, le style de rédaction suivant est recommandé.

  • Module
    • lowercase_underscore
    • Minuscule + trait de soulignement
  • Paquet
    • lowercase
    • toutes les lettres minuscules
  • Classes, exceptions
    • CapitalizedWords(CamelCase)
    • Mettez la première lettre d'un mot en majuscule, sans soulignement.
  • Fonctions, variables et méthodes
    • lowercase_underscore
    • Minuscule + trait de soulignement
  • constant
    • ALL_CAPS
    • Lettres majuscules + trait de soulignement

Toutefois, si votre organisation ne dispose pas de ses propres conventions de dénomination, il est recommandé de suivre la PEP8.