Noms i convencions de noms vàlids i no vàlids per a identificadors (per exemple, noms de variables) a Python

Negocis

A Python, cal definir els identificadors (noms de variables, funcions, classes, etc.) segons les regles. Els noms que no compleixin les regles no es poden utilitzar com a identificadors i provocaran un error.

Aquí es proporciona la informació següent.

  • Caràcters que es poden utilitzar o no en identificadors (noms)
    • Caràcters ASCII
    • Caràcter Unicode
      • normalització (per exemple, en matemàtiques)
  • Comproveu si la cadena és un identificador vàlid:isidentifier()
  • Paraules que no es poden utilitzar com a identificadors (noms) (paraules reservades)
  • Paraules que no s’han d’utilitzar com a identificadors (noms)
  • Convencions de denominació per a PEP8

La descripció següent es dóna a Python 3 i pot ser diferent a Python 2.

Caràcters que es poden utilitzar o no en identificadors (noms)

Indica caràcters que es poden utilitzar o no com a identificadors (noms).

A més, tot i que hi ha moltes coses per escriure, bàsicament tot el que cal recordar és el següent.

  • Utilitzeu lletres majúscules i minúscules, números i ratlles baixes.
  • La primera (primera) lletra no pot ser un número.

Caràcters ASCII

Els caràcters ASCII que es poden utilitzar com a identificadors (noms) són els alfabets majúscules i minúscules (A ~ Z, a ~ z), els números (0 ~ 9) i els guions baixos (_). L’alfabet distingeix entre majúscules i minúscules.

AbcDef_123 = 100
print(AbcDef_123)
# 100

No es poden utilitzar símbols que no siguin subratllats.

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

A més, els números no es poden utilitzar al principi (primera lletra).

# 1_abc = 100
# SyntaxError: invalid token

Els punts baixos també es poden utilitzar al principi.

_abc = 100
print(_abc)
# 100

Tanmateix, tingueu en compte que un subratllat al principi pot tenir un significat especial.

Caràcter Unicode

Des de Python 3, també es poden utilitzar caràcters Unicode.

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

No es poden utilitzar tots els caràcters Unicode i, segons la categoria Unicode, no es poden utilitzar alguns. Per exemple, no es poden utilitzar símbols com els signes de puntuació i els pictogrames.

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

# ☺ = 100
# SyntaxError: invalid character in identifier

Consulteu la documentació oficial dels codis de la categoria Unicode que es poden utilitzar.

En molts casos, no hi ha cap avantatge a l’ús de caràcters xinesos, etc., simplement perquè també es poden utilitzar caràcters Unicode (sense error).

normalització (per exemple, en matemàtiques)

Els caràcters Unicode es converteixen a la forma normalitzada NFKC per a la seva interpretació. Per exemple, els alfabets d’amplada completa es converteixen en alfabets de mitja amplada (caràcters ASCII).

Tingueu en compte que, fins i tot si el codi font mostra una visualització diferent, es considera el mateix objecte i se sobreescriurà.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

Comproveu si la cadena és un identificador vàlid: isidentifier ()

Es pot comprovar si una cadena és vàlida o no com a identificador amb el mètode de cadena isidentifier ().

Retorna cert si és vàlid com a identificador i fals si no és vàlid.

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

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

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

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

Paraules que no es poden utilitzar com a identificadors (noms) (paraules reservades)

Hi ha algunes paraules (paraules reservades) que no es poden utilitzar com a identificadors encara que siguin cadenes vàlides com a identificadors (noms).

Com que una paraula reservada és una cadena vàlida com a identificador, isidentifier () retorna true, però es produeix un error si s’utilitza com a identificador.

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

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

Per obtenir una llista de paraules reservades i comprovar si una cadena és una paraula reservada, utilitzeu el mòdul de paraules clau de la biblioteca estàndard.

Paraules que no s’han d’utilitzar com a identificadors (noms)

Els noms de les funcions integrades de Python, per exemple, es poden utilitzar com a identificadors, de manera que podeu assignar-los nous valors com a variables.

Per exemple, len () és una funció integrada que retorna el nombre d’elements d’una llista o el nombre de caràcters d’una cadena.

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

print(len('abc'))
# 3

Si assigneu un valor nou a aquest nom len, la funció original es sobreescriurà i quedarà inutilitzable. Tingueu en compte que no s’imprimirà cap error ni avís en assignar un valor nou.

print(len('abc'))
# 3

len = 100
print(len)
# 100

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

Un altre error comú és fer servir list = [0, 1, 2], cosa que fa impossible fer servir list (). Ves amb compte.

Convencions de denominació per a PEP8

PEP significa Python Enhancement Proposal, un document que descriu noves funcions i altres aspectes 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 és el vuitè i descriu la “Guia d’estil per al codi Python”, és a dir, la guia d’estil per a Python.

També s’esmenten les convencions de denominació.

Consulteu l’enllaç anterior per obtenir més detalls, però, per exemple, es recomana el següent estil d’escriptura.

  • Mòdul
    • lowercase_underscore
    • Minúscules + subratllat
  • Paquet
    • lowercase
    • totes les minúscules
  • Classes, excepcions
    • CapitalizedWords(CamelCase)
    • Majúscula de la primera lletra d’una paraula, sense subratllat
  • Funcions, variables i mètodes
    • lowercase_underscore
    • Minúscules + subratllat
  • constant
    • ALL_CAPS
    • Majúscules + subratllat

Tanmateix, si la vostra organització no té les seves pròpies convencions de denominació, es recomana seguir PEP8.

Copied title and URL