Važeći i nevažeći nazivi i konvencije o imenovanju za identifikatore (npr. imena varijabli) u Pythonu

Poslovanje

U Pythonu se identifikatori (nazivi varijabli, funkcija, klasa itd.) moraju definirati prema pravilima. Imena koja ne slijede pravila ne mogu se koristiti kao identifikatori i rezultirat će pogreškom.

Ovdje su navedene sljedeće informacije.

  • Znakovi koji se mogu i ne mogu koristiti u identifikatorima (imenima)
    • ASCII znakovi
    • Unicode znak
      • normalizacija (npr. u matematici)
  • Provjerite je li niz valjani identifikator:isidentifier()
  • Riječi koje se ne mogu koristiti kao identifikatori (imena) (rezervirane riječi)
  • Riječi koje se ne smiju koristiti kao identifikatori (imena)
  • Konvencije imenovanja za PEP8

Sljedeći opis dat je u Pythonu 3, a može biti drugačiji u Pythonu 2.

Znakovi koji se mogu i ne mogu koristiti u identifikatorima (imenima)

Označava znakove koji se mogu i ne mogu koristiti kao identifikatori (imena).

Osim toga, iako postoji mnogo stvari o kojima treba pisati, u osnovi sve što trebate zapamtiti je sljedeće.

  • Koristite velika i mala slova, brojeve i podvlake.
  • Prvo (prvo) slovo ne može biti broj.

ASCII znakovi

ASCII znakovi koji se mogu koristiti kao identifikatori (imena) su velika i mala slova (A~Z,a~z), brojevi (0~9) i podvlake (_). Abeceda je osjetljiva na velika i mala slova.

AbcDef_123 = 100
print(AbcDef_123)
# 100

Ne mogu se koristiti drugi simboli osim podvlaka.

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

Također, brojevi se ne mogu koristiti na početku (prvo slovo).

# 1_abc = 100
# SyntaxError: invalid token

Podvlake se također mogu koristiti na početku.

_abc = 100
print(_abc)
# 100

Međutim, imajte na umu da donja crta na početku može imati posebno značenje.

Unicode znak

Od Pythona 3 mogu se koristiti i Unicode znakovi.

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

Ne mogu se koristiti svi Unicode znakovi, a ovisno o Unicode kategoriji, neki se ne mogu koristiti. Na primjer, ne mogu se koristiti simboli kao što su interpunkcijski znakovi i piktogrami.

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

# ☺ = 100
# SyntaxError: invalid character in identifier

Pogledajte službenu dokumentaciju za Unicode kodove kategorija koji se mogu koristiti.

U mnogim slučajevima nema prednosti u korištenju kineskih znakova itd., jednostavno zato što se mogu koristiti i Unicode znakovi (bez greške).

normalizacija (npr. u matematici)

Unicode znakovi se pretvaraju u normalizirani oblik NFKC za interpretaciju. Na primjer, abecede pune širine se pretvaraju u abecede polovične širine (ASCII znakovi).

Imajte na umu da čak i ako izvorni kod prikazuje drugačiji prikaz, smatra se istim objektom i bit će prebrisan.

ABC = 100
ABC = -100

print(ABC)
# -100

print(ABC)
# -100

print(ABC is ABC)
# True

Provjerite je li niz valjani identifikator: isidentifier()

Je li niz valjan kao identifikator ili ne može se provjeriti metodom stringa isidentifier().

Vraća true ako je valjan kao identifikator i false ako je nevažeći.

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

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

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

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

Riječi koje se ne mogu koristiti kao identifikatori (imena) (rezervirane riječi)

Postoje neke riječi (rezervirane riječi) koje se ne mogu koristiti kao identifikatori čak i ako su valjani nizovi kao identifikatori (imena).

Budući da je rezervirana riječ valjani niz kao identifikator, isidentifier() vraća true, ali dolazi do pogreške ako se koristi kao identifikator.

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

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

Da biste dobili popis rezerviranih riječi i provjerili je li niz rezervirana riječ, koristite modul ključnih riječi standardne biblioteke.

Riječi koje se ne smiju koristiti kao identifikatori (imena)

Nazivi ugrađenih funkcija Pythona, na primjer, mogu se koristiti kao identifikatori, tako da im možete dodijeliti nove vrijednosti kao varijable.

Na primjer, len() je ugrađena funkcija koja vraća broj elemenata na popisu ili broj znakova u nizu.

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

print(len('abc'))
# 3

Ako ovom nazivu len dodijelite novu vrijednost, izvorna funkcija će biti prepisana i postati neupotrebljiva. Imajte na umu da se prilikom dodjele nove vrijednosti neće ispisati pogreška ili upozorenje.

print(len('abc'))
# 3

len = 100
print(len)
# 100

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

Druga uobičajena pogreška je korištenje liste = [0, 1, 2], što onemogućuje korištenje liste(). Budi oprezan.

Konvencije imenovanja za PEP8

PEP je skraćenica za Python Enhancement Proposal, dokument koji opisuje nove značajke i druge aspekte Pythona.

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 je osmi, a opisuje “Style Guide for Python Code”, odnosno stilski vodič za Python.

Spominju se i konvencije imenovanja.

Za više pojedinosti pogledajte gornju poveznicu, ali na primjer, preporučuje se sljedeći stil pisanja.

  • Modul
    • lowercase_underscore
    • Mala slova + donja crta
  • Paket
    • lowercase
    • sva mala slova
  • Klase, iznimke
    • CapitalizedWords(CamelCase)
    • Napišite veliko početno slovo riječi, bez podvlake
  • Funkcije, varijable i metode
    • lowercase_underscore
    • Mala slova + donja crta
  • konstantno
    • ALL_CAPS
    • Velika slova + donja crta

Međutim, ako vaša organizacija nema vlastite konvencije imenovanja, preporuča se slijediti PEP8.