Nume valide și invalide și convenții de denumire pentru identificatori (de exemplu, nume de variabile) în Python

Afaceri

În Python, identificatorii (numele variabilelor, funcțiilor, claselor etc.) trebuie să fie definiți în conformitate cu anumite reguli. Numele care nu respectă regulile nu pot fi utilizate ca identificatori și vor da naștere la o eroare.

Aici sunt furnizate următoarele informații.

  • Caractere care pot și nu pot fi folosite în identificatori (nume)
    • Caractere ASCII
    • Caracter Unicode
      • normalizare (de exemplu, în matematică)
  • Verifică dacă șirul este un identificator valid:isidentifier()
  • Cuvinte care nu pot fi folosite ca identificatori (nume) (cuvinte rezervate)
  • Cuvinte care nu trebuie folosite ca identificatori (nume)
  • Convenții de denumire pentru PEP8

Următoarea descriere este dată în Python 3 și poate fi diferită în Python 2.

Caractere care pot și nu pot fi folosite în identificatori (nume)

Indică caracterele care pot și nu pot fi folosite ca identificatori (nume).

În plus, deși sunt multe lucruri de scris, în principiu, tot ce trebuie să rețineți sunt următoarele.

  • Folosiți litere majuscule și minuscule, numere și semne de subliniere.
  • Prima (prima) literă nu poate fi un număr.

Caractere ASCII

Caracterele ASCII care pot fi utilizate ca identificatori (nume) sunt alfabete majuscule și minuscule (A~Z,a~z), numere (0~9) și caractere de subliniere (_). Alfabetul este sensibil la majuscule și minuscule.

AbcDef_123 = 100
print(AbcDef_123)
# 100

Nu se pot utiliza alte simboluri decât sublinierile.

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

De asemenea, numerele nu pot fi folosite la început (prima literă).

# 1_abc = 100
# SyntaxError: invalid token

Sublinierile pot fi, de asemenea, folosite la început.

_abc = 100
print(_abc)
# 100

Cu toate acestea, rețineți că o subliniere la început poate avea o semnificație specială.

Caracter Unicode

Începând cu Python 3, pot fi utilizate și caractere Unicode.

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

Nu toate caracterele Unicode pot fi utilizate și, în funcție de categoria Unicode, unele nu pot fi utilizate. De exemplu, nu pot fi utilizate simboluri precum semnele de punctuație și pictogramele.

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

# ☺ = 100
# SyntaxError: invalid character in identifier

Consultați documentația oficială pentru codurile de categorie Unicode care pot fi utilizate.

În multe cazuri, nu există niciun avantaj în utilizarea caracterelor chinezești etc., pur și simplu pentru că pot fi utilizate și caracterele Unicode (fără erori).

normalizare (de exemplu, în matematică)

Caracterele Unicode sunt convertite în forma normalizată NFKC pentru interpretare. De exemplu, alfabetele cu lățime completă sunt convertite în alfabete cu jumătate de lățime (caractere ASCII).

Rețineți că, chiar dacă codul sursă prezintă un afișaj diferit, acesta este considerat același obiect și va fi suprascris.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

Verificați dacă șirul este un identificator valid: isidentifier()

Dacă un șir de caractere este sau nu valid ca identificator poate fi verificat cu ajutorul metodei isidentifier().

Se returnează true dacă este valid ca identificator și false dacă este invalid.

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

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

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

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

Cuvinte care nu pot fi folosite ca identificatori (nume) (cuvinte rezervate)

Există anumite cuvinte (cuvinte rezervate) care nu pot fi utilizate ca identificatori, chiar dacă sunt șiruri de caractere valide ca identificatori (nume).

Deoarece un cuvânt rezervat este un șir de caractere valabil ca identificator, isidentifier() returnează true, dar apare o eroare dacă acesta este utilizat ca identificator.

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

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

Pentru a obține o listă de cuvinte rezervate și pentru a verifica dacă un șir de caractere este un cuvânt rezervat, utilizați modulul de cuvinte cheie din biblioteca standard.

Cuvinte care nu trebuie folosite ca identificatori (nume)

Numele funcțiilor încorporate în Python, de exemplu, pot fi utilizate ca identificatori, astfel încât să le puteți atribui noi valori ca variabile.

De exemplu, len() este o funcție încorporată care returnează numărul de elemente dintr-o listă sau numărul de caractere dintr-un șir de caractere.

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

print(len('abc'))
# 3

Dacă atribuiți o nouă valoare acestui nume len, funcția originală va fi suprascrisă și va deveni inutilizabilă. Rețineți că nu se va imprima nicio eroare sau avertisment atunci când se atribuie o nouă valoare.

print(len('abc'))
# 3

len = 100
print(len)
# 100

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

O altă greșeală frecventă este utilizarea listei = [0, 1, 2], ceea ce face imposibilă utilizarea lui list(). Aveți grijă.

Convenții de denumire pentru PEP8

PEP este acronimul de la Python Enhancement Proposal, un document care descrie noi caracteristici și alte aspecte ale 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 este cel de-al optulea și descrie „Style Guide for Python Code”, adică ghidul de stil pentru Python.

Sunt menționate, de asemenea, convențiile de denumire.

Pentru mai multe detalii, consultați linkul de mai sus, dar, de exemplu, se recomandă următorul stil de redactare.

  • Modul
    • lowercase_underscore
    • Minusculă + subliniere
  • Pachet
    • lowercase
    • toate literele minuscule
  • Clase, Excepții
    • CapitalizedWords(CamelCase)
    • Scrieți cu majusculă prima literă a unui cuvânt, fără subliniere
  • Funcții, variabile și metode
    • lowercase_underscore
    • Minusculă + subliniere
  • constant
    • ALL_CAPS
    • Litere majuscule + subliniere

Cu toate acestea, în cazul în care organizația dumneavoastră nu are propriile convenții de denumire, se recomandă să urmați PEP8.